summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2013-01-06 23:04:25 +0000
committerTom Rini <trini@ti.com>2013-02-04 09:07:21 -0500
commit0f3073433ceb258fde00f82556d43dba6633083a (patch)
treefdf855e13231335f59992fddc45596baa31d474a
parentac1048ae1c909382190bc6c888b91325e808e0b5 (diff)
downloadu-boot-imx-0f3073433ceb258fde00f82556d43dba6633083a.zip
u-boot-imx-0f3073433ceb258fde00f82556d43dba6633083a.tar.gz
u-boot-imx-0f3073433ceb258fde00f82556d43dba6633083a.tar.bz2
common/cmd_bootm.c: prevent running of subcommands before 'bootm start'
The execution order of the bootm subcommands is fixed. Although here is a sanity check in the state machine which should prevent running the subcommands in wrong order but it does not catch all possible errors. It is possible to run any subcommand without running 'bootm start' first which leads to unexpected behaviour. For example, running 'bootm loados' without 'bootm start' causes a hang: U-Boot> bootm loados XIP Invalid Image ... OK OK Add a sanity check to 'do_bootm_subcommand' in order to ensure that no subcommands can be executed before 'bootm start'. After the patch running of any subcommand without running 'bootm start' will cause an error like this: U-Boot> bootm loados Trying to execute a command out of order bootm - boot application image from memory Usage: bootm [addr [arg ...]] - boot application image stored in memory ... Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-rw-r--r--common/cmd_bootm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 1b8a8c1..7ae5d5b 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -498,7 +498,8 @@ static int do_bootm_subcommand(cmd_tbl_t *cmdtp, int flag, int argc,
return CMD_RET_USAGE;
}
- if (images.state >= state) {
+ if (images.state < BOOTM_STATE_START ||
+ images.state >= state) {
printf("Trying to execute a command out of order\n");
return CMD_RET_USAGE;
}