diff mbox

do_smhload: fix return code

Message ID 1488476716-1429-1-git-send-email-ryan.harkin@linaro.org
State Accepted
Commit 072c8c4cedad87c4be4edca259e1760d7db42e1b
Headers show

Commit Message

Ryan Harkin March 2, 2017, 5:45 p.m. UTC
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(-)

Comments

Linus Walleij March 3, 2017, 8:50 a.m. UTC | #1
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
Tom Rini March 10, 2017, 3:10 p.m. UTC | #2
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!

-- 
Tom
diff mbox

Patch

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) {