diff options
| author | Simon Glass <sjg@chromium.org> | 2013-07-10 09:25:33 -0400 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2013-07-12 17:16:37 -0400 | 
| commit | b7a1d13462115d2cafb0a3ffcbdce48c2f78f06e (patch) | |
| tree | 8b0e8e7bbc4652ed3b6d951fea642725d80f4dbf /common/cmd_bootm.c | |
| parent | e3a5bbce4590fbe18daae51087cd5cf4d2246bb9 (diff) | |
| download | olio-uboot-2014.01-b7a1d13462115d2cafb0a3ffcbdce48c2f78f06e.tar.xz olio-uboot-2014.01-b7a1d13462115d2cafb0a3ffcbdce48c2f78f06e.zip | |
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>
Diffstat (limited to 'common/cmd_bootm.c')
| -rw-r--r-- | common/cmd_bootm.c | 21 | 
1 files changed, 8 insertions, 13 deletions
| diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index 2694c664a..c18157cd4 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -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: |