diff mbox

[U-Boot] efi_loader: Revert device_handle to disk after net boot

Message ID 1476798580-169659-1-git-send-email-agraf@suse.de
State Accepted
Commit 3fb97e267a5e136d8386a7cb1d5b4fe63af518eb
Delegated to: Alexander Graf
Headers show

Commit Message

Alexander Graf Oct. 18, 2016, 1:49 p.m. UTC
When you boot an efi payload from network, then exit that payload
and load another payload from disk afterwords, the disk payload will
currently see the network device as its boot path.

This breaks grub2 for example which tries to find its modules based
on the path it was loaded from.

This patch fixes that issue by always reverting to disk paths if we're
not in the network boot. That way the data structures after a network
boot look the same as before.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 cmd/bootefi.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Alexander Graf Oct. 18, 2016, 6:05 p.m. UTC | #1
> When you boot an efi payload from network, then exit that payload
> and load another payload from disk afterwords, the disk payload will
> currently see the network device as its boot path.
> 
> This breaks grub2 for example which tries to find its modules based
> on the path it was loaded from.
> 
> This patch fixes that issue by always reverting to disk paths if we're
> not in the network boot. That way the data structures after a network
> boot look the same as before.
> 
> Signed-off-by: Alexander Graf <agraf@suse.de>

Thanks, applied to efi-next

Alex
diff mbox

Patch

diff --git a/cmd/bootefi.c b/cmd/bootefi.c
index 32148d7..a9910d7 100644
--- a/cmd/bootefi.c
+++ b/cmd/bootefi.c
@@ -207,6 +207,8 @@  static unsigned long do_bootefi_exec(void *efi, void *fdt)
 
 	if (!memcmp(bootefi_device_path[0].str, "N\0e\0t", 6))
 		loaded_image_info.device_handle = nethandle;
+	else
+		loaded_image_info.device_handle = bootefi_device_path;
 #endif
 #ifdef CONFIG_GENERATE_SMBIOS_TABLE
 	efi_smbios_register();