bootm: Handle errors consistently

A recent bootm fix left the error path incomplete. If CONFIG_TRACE is
set it may still not be a supported command, so cover that with the
unsupported subcommand print.  Once we handle BOOTM_STATE_OS_GO, we can
just move into the error handler itself, no need for a goto there.

Signed-off-by: Simon Glass <sjg@chromium.org>
[trini: Update slightly based on Simon's changes to also cover
CONFIG_TRACE/BOOTM_STATE_FAKE_OS_GO]
Signed-off-by: Tom Rini <trini@ti.com>
This commit is contained in:
Simon Glass 2013-07-10 09:25:33 -04:00 committed by Tom Rini
parent e3a5bbce45
commit b7a1d13462

View file

@ -703,13 +703,6 @@ static int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc,
if (!ret && (states & BOOTM_STATE_OS_PREP)) if (!ret && (states & BOOTM_STATE_OS_PREP))
ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, images); ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, images);
/* Check for unsupported subcommand. */
if (ret) {
puts("subcommand not supported\n");
return ret;
}
#ifdef CONFIG_TRACE #ifdef CONFIG_TRACE
/* Pretend to run the OS, then run a user command */ /* Pretend to run the OS, then run a user command */
if (!ret && (states & BOOTM_STATE_OS_FAKE_GO)) { if (!ret && (states & BOOTM_STATE_OS_FAKE_GO)) {
@ -721,15 +714,17 @@ static int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc,
ret = run_command_list(cmd_list, -1, flag); ret = run_command_list(cmd_list, -1, flag);
} }
#endif #endif
/* Now run the OS! We hope this doesn't return */
if (!ret && (states & BOOTM_STATE_OS_GO)) { /* Check for unsupported subcommand. */
ret = boot_selected_os(argc, argv, BOOTM_STATE_OS_GO, if (ret) {
images, boot_fn); puts("subcommand not supported\n");
if (ret) return ret;
goto err;
} }
return ret; /* Now run the OS! We hope this doesn't return */
if (!ret && (states & BOOTM_STATE_OS_GO))
ret = boot_selected_os(argc, argv, BOOTM_STATE_OS_GO,
images, boot_fn);
/* Deal with any fallout */ /* Deal with any fallout */
err: err: