瀏覽代碼

fs: error handling in do_load()

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>
Heinrich Schuchardt 3 年之前
父節點
當前提交
1244f36900
共有 1 個文件被更改,包括 7 次插入5 次删除
  1. 7 5
      fs/fs.c

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