[U-Boot] [PATCH] do_smhload: fix return code

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 --- arch/arm/lib/semihosting.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c index e32ad90..415ac89 100644 --- a/arch/arm/lib/semihosting.c +++ b/arch/arm/lib/semihosting.c @@ -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) {

On Thu, Mar 2, 2017 at 6:45 PM, Ryan Harkin ryan.harkin@linaro.org wrote:
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
Yours, Linus Walleij

On Thu, Mar 02, 2017 at 05:45:16PM +0000, Ryan Harkin wrote:
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
Applied to u-boot/master, thanks!
participants (3)
-
Linus Walleij
-
Ryan Harkin
-
Tom Rini