diff mbox series

[v2,1/1] fs: error handling in do_load()

Message ID 20200629180849.51888-1-xypron.glpk@gmx.de
State Accepted
Commit 1244f369006370722dbcca9fb26e59458d462567
Delegated to: Tom Rini
Headers show
Series [v2,1/1] fs: error handling in do_load() | expand

Commit Message

Heinrich Schuchardt June 29, 2020, 6:08 p.m. UTC
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>
---
v2:
	use if() instead of #ifdef
---
 fs/fs.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

--
2.27.0

Comments

Simon Glass July 3, 2020, 12:45 a.m. UTC | #1
On Mon, 29 Jun 2020 at 12:08, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> 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>
> ---
> v2:
>         use if() instead of #ifdef
> ---
>  fs/fs.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
>

Reviewed-by: Simon Glass <sjg@chromium.org>
Tom Rini July 17, 2020, 8:58 p.m. UTC | #2
On Mon, Jun 29, 2020 at 08:08:49PM +0200, Heinrich Schuchardt wrote:

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

Applied to u-boot/master, thanks!
diff mbox series

Patch

diff --git a/fs/fs.c b/fs/fs.c
index ad4caaeb1e..7268ec87aa 100644
--- 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) {