x86: mtrr: Fix parsing of "mtrr list" command
authorWolfgang Wallner <wolfgang.wallner@br-automation.com>
Fri, 14 Aug 2020 07:55:24 +0000 (09:55 +0200)
committerBin Meng <bmeng.cn@gmail.com>
Tue, 1 Sep 2020 05:24:45 +0000 (13:24 +0800)
The command 'mtrr' does not recognize the 'list' subcommand any more
since the code restructuring in commit b2a76b3fe75a ("x86: mtrr:
Restructure so command execution is in one place").

The if-else parsing the command arguments does not take 'list' into
account: the if-branch is intended for no subcommands, the else-branch
is intended for the non-list subcommands (which all expect additional
arguments). Calling the 'mtrr list' subcommand leads to a "return
CMD_RET_USAGE" in the else-branch.

Fix this by changing the else-branch to explicitly checking for
if (cmd != 'l').

Fixes: b2a76b3fe75a ("x86: mtrr: Restructure so command execution is in one place")
Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
cmd/x86/mtrr.c

index e118bba..99efecb 100644 (file)
@@ -121,7 +121,8 @@ static int do_mtrr(struct cmd_tbl *cmdtp, int flag, int argc,
        if (argc < 1 || !cmd) {
                cmd = 'l';
                reg = 0;
-       } else {
+       }
+       if (cmd != 'l') {
                if (argc < 2)
                        return CMD_RET_USAGE;
                reg = simple_strtoul(argv[1], NULL, 16);