]> git.sur5r.net Git - u-boot/commitdiff
bootm: Handle errors consistently
authorSimon Glass <sjg@chromium.org>
Wed, 10 Jul 2013 13:25:33 +0000 (09:25 -0400)
committerTom Rini <trini@ti.com>
Fri, 12 Jul 2013 21:16:37 +0000 (17:16 -0400)
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>
common/cmd_bootm.c

index 2694c664a409a5fe7ebd0914a82c58f84dd7fe4d..c18157cd4c20a4b74dbced08ecc89465cc7a8be6 100644 (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))
                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
        /* Pretend to run the OS, then run a user command */
        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);
        }
 #endif
+
+       /* Check for unsupported subcommand. */
+       if (ret) {
+               puts("subcommand not supported\n");
+               return ret;
+       }
+
        /* Now run the OS! We hope this doesn't return */
-       if (!ret && (states & BOOTM_STATE_OS_GO)) {
+       if (!ret && (states & BOOTM_STATE_OS_GO))
                ret = boot_selected_os(argc, argv, BOOTM_STATE_OS_GO,
                                images, boot_fn);
-               if (ret)
-                       goto err;
-       }
-
-       return ret;
 
        /* Deal with any fallout */
 err: