From: Heinrich Schuchardt Date: Thu, 14 Oct 2021 23:31:02 +0000 (+0200) Subject: efi_loader: efi_dp_from_lo() don't copy GUID X-Git-Url: http://git.dujemihanovic.xyz/img/sics.gif?a=commitdiff_plain;h=0421735dd8ffc82db22c3767e7aa38c65fc7298e;p=u-boot.git efi_loader: efi_dp_from_lo() don't copy GUID Instead of copying a GUID and then using a pointer to the copy for calling guidcmp(), just pass the pointer to the orginal GUID. Signed-off-by: Heinrich Schuchardt --- diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 67ab06aefc..5235dbb7c1 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -1169,7 +1169,7 @@ static void show_efi_boot_opt_data(u16 *varname16, void *data, size_t *size) printf(" file_path: %ls\n", dp_str); efi_free_pool(dp_str); - initrd_path = efi_dp_from_lo(&lo, &initrd_dp_size, lf2_initrd_guid); + initrd_path = efi_dp_from_lo(&lo, &initrd_dp_size, &lf2_initrd_guid); if (initrd_path) { dp_str = efi_dp_str(initrd_path); printf(" initrd_path: %ls\n", dp_str); diff --git a/include/efi_loader.h b/include/efi_loader.h index 5cdc72345e..6e806f9b0d 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -842,7 +842,8 @@ struct efi_load_option { }; struct efi_device_path *efi_dp_from_lo(struct efi_load_option *lo, - efi_uintn_t *size, efi_guid_t guid); + efi_uintn_t *size, + const efi_guid_t *guid); struct efi_device_path *efi_dp_concat(const struct efi_device_path *dp1, const struct efi_device_path *dp2); efi_status_t efi_deserialize_load_option(struct efi_load_option *lo, u8 *data, diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c index a09090a32e..a588712ef1 100644 --- a/lib/efi_loader/efi_device_path.c +++ b/lib/efi_loader/efi_device_path.c @@ -1218,7 +1218,8 @@ ssize_t efi_dp_check_length(const struct efi_device_path *dp, */ struct efi_device_path *efi_dp_from_lo(struct efi_load_option *lo, - efi_uintn_t *size, efi_guid_t guid) + efi_uintn_t *size, + const efi_guid_t *guid) { struct efi_device_path *fp = lo->file_path; struct efi_device_path_vendor *vendor; @@ -1233,7 +1234,7 @@ efi_device_path *efi_dp_from_lo(struct efi_load_option *lo, continue; vendor = (struct efi_device_path_vendor *)fp; - if (!guidcmp(&vendor->guid, &guid)) + if (!guidcmp(&vendor->guid, guid)) return efi_dp_dup(fp); } log_debug("VenMedia(%pUl) not found in %ls\n", &guid, lo->label); diff --git a/lib/efi_loader/efi_helper.c b/lib/efi_loader/efi_helper.c index d03a736461..4c5b7cd2e1 100644 --- a/lib/efi_loader/efi_helper.c +++ b/lib/efi_loader/efi_helper.c @@ -83,7 +83,7 @@ struct efi_device_path *efi_get_dp_from_boot(const efi_guid_t guid) if (ret != EFI_SUCCESS) goto out; - tmp = efi_dp_from_lo(&lo, &size, guid); + tmp = efi_dp_from_lo(&lo, &size, &guid); if (!tmp) goto out;