aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinrich Schuchardt2021-10-15 01:31:02 +0200
committerHeinrich Schuchardt2021-10-21 03:46:04 +0200
commit0421735dd8ffc82db22c3767e7aa38c65fc7298e (patch)
tree9b1b9fb1eb831410422689e70d7476cfc03053c7
parentebdea88d57d5e67b8f6e6cf615300eedbc7200a9 (diff)
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 <xypron.glpk@gmx.de>
-rw-r--r--cmd/efidebug.c2
-rw-r--r--include/efi_loader.h3
-rw-r--r--lib/efi_loader/efi_device_path.c5
-rw-r--r--lib/efi_loader/efi_helper.c2
4 files changed, 7 insertions, 5 deletions
diff --git a/cmd/efidebug.c b/cmd/efidebug.c
index 67ab06aefc1..5235dbb7c1b 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 5cdc72345e5..6e806f9b0db 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 a09090a32e4..a588712ef14 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 d03a7364615..4c5b7cd2e12 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;