fs: error handling in do_load()
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Mon, 29 Jun 2020 18:08:49 +0000 (20:08 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 17 Jul 2020 14:47:19 +0000 (10:47 -0400)
If a file cannot be loaded, show an error message.
Set the EFI boot device only after successfully loading a file.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
fs/fs.c

diff --git a/fs/fs.c b/fs/fs.c
index 8f8938c..edd8adc 100644 (file)
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -715,15 +715,17 @@ int do_load(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[],
        else
                pos = 0;
 
-#ifdef CONFIG_CMD_BOOTEFI
-       efi_set_bootdev(argv[1], (argc > 2) ? argv[2] : "",
-                       (argc > 4) ? argv[4] : "");
-#endif
        time = get_timer(0);
        ret = _fs_read(filename, addr, pos, bytes, 1, &len_read);
        time = get_timer(time);
-       if (ret < 0)
+       if (ret < 0) {
+               printf("Failed to load '%s'\n", filename);
                return 1;
+       }
+
+       if (IS_ENABLED(CONFIG_CMD_BOOTEFI))
+               efi_set_bootdev(argv[1], (argc > 2) ? argv[2] : "",
+                               (argc > 4) ? argv[4] : "");
 
        printf("%llu bytes read in %lu ms", len_read, time);
        if (time > 0) {