Zero partition_signature in the efi_device_path_hard_drive_path
structure when signature_type is zero.

This is required so that efi_dp_match() will work as expected
when doing memcmp() comparisons.

Corrects a problem where the loaded image protocol would not return a
device path with MEDIA_DEVICE causing the OpenBSD bootloader to fail
on rpi_3 and other targets.

Signed-off-by: Jonathan Gray <j...@jsg.id.au>
---
 lib/efi_loader/efi_device_path.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c
index f6e368e029..8045532a29 100644
--- a/lib/efi_loader/efi_device_path.c
+++ b/lib/efi_loader/efi_device_path.c
@@ -431,6 +431,9 @@ static void *dp_part_fill(void *buf, struct blk_desc *desc, 
int part)
                if (hddp->signature_type != 0)
                        memcpy(hddp->partition_signature, &desc->guid_sig,
                               sizeof(hddp->partition_signature));
+               else
+                       memset(hddp->partition_signature, 0,
+                              sizeof(hddp->partition_signature));
 
                buf = &hddp[1];
        }
-- 
2.15.0

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to