do_smhload: fix return code
authorRyan Harkin <ryan.harkin@linaro.org>
Thu, 2 Mar 2017 17:45:16 +0000 (17:45 +0000)
committerTom Rini <trini@konsulko.com>
Fri, 10 Mar 2017 00:52:14 +0000 (19:52 -0500)
do_smhload was using a ulong to store the return value from
smh_load_file. That returns an int, where -1 indicates an error. As a
ulong will never be negative, smh_load_file errors were not detected and
so_smhload always returned zero.

Also, when errors were spotted, do_smhload was returning 1, rather than
the enumeration CMD_RET_FAILURE (which is also 1).

Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
arch/arm/lib/semihosting.c

index e32ad909450ca23faab030698f7fea0faa95d675..415ac89de9f1fe9d7f20e39d7e3928ed282617ae 100644 (file)
@@ -186,7 +186,7 @@ static int do_smhload(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (argc == 3 || argc == 4) {
                ulong load_addr;
                ulong end_addr = 0;
-               ulong ret;
+               int ret;
                char end_str[64];
 
                load_addr = simple_strtoul(argv[2], NULL, 16);
@@ -195,7 +195,7 @@ static int do_smhload(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
                ret = smh_load_file(argv[1], load_addr, &end_addr);
                if (ret < 0)
-                       return 1;
+                       return CMD_RET_FAILURE;
 
                /* Optionally save returned end to the environment */
                if (argc == 4) {