diff options
author | Stephen Warren <swarren@nvidia.com> | 2013-04-01 11:50:28 +0000 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-04-02 16:23:35 -0400 |
commit | 9fd383724cf49b5fd787c62169569d870857d611 (patch) | |
tree | 825f0847e12e13140ab6b9723d579379f0d0f1e0 /common/cmd_mmc.c | |
parent | 5993053fa42706b289a08f3661a9c00096158981 (diff) | |
download | u-boot-imx-9fd383724cf49b5fd787c62169569d870857d611.zip u-boot-imx-9fd383724cf49b5fd787c62169569d870857d611.tar.gz u-boot-imx-9fd383724cf49b5fd787c62169569d870857d611.tar.bz2 |
mmc: don't allow extra cmdline arguments
The "mmc rescan" command takes no arguments. However, executing
"mmc rescan 1" succeeds, leading the user to believe that MMC device 1
has been rescanned. In fact, the "current" MMC device has been
rescanned, and the current device may well not be 1. Add error-checking
to the "mmc" command to explicitly reject any extra command-line
arguments so that it's more obvious when U-Boot isn't doing what the
user thought they asked it to.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'common/cmd_mmc.c')
-rw-r--r-- | common/cmd_mmc.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c index 8c53a10..9f3d6c5 100644 --- a/common/cmd_mmc.c +++ b/common/cmd_mmc.c @@ -164,8 +164,12 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } if (strcmp(argv[1], "rescan") == 0) { - struct mmc *mmc = find_mmc_device(curr_device); + struct mmc *mmc; + if (argc != 2) + return CMD_RET_USAGE; + + mmc = find_mmc_device(curr_device); if (!mmc) { printf("no mmc device at slot %x\n", curr_device); return 1; @@ -179,8 +183,12 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return 0; } else if (strncmp(argv[1], "part", 4) == 0) { block_dev_desc_t *mmc_dev; - struct mmc *mmc = find_mmc_device(curr_device); + struct mmc *mmc; + + if (argc != 2) + return CMD_RET_USAGE; + mmc = find_mmc_device(curr_device); if (!mmc) { printf("no mmc device at slot %x\n", curr_device); return 1; @@ -196,6 +204,8 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) puts("get mmc type error!\n"); return 1; } else if (strcmp(argv[1], "list") == 0) { + if (argc != 2) + return CMD_RET_USAGE; print_mmc_devices('\n'); return 0; } else if (strcmp(argv[1], "dev") == 0) { |