summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAKASHI Takahiro <takahiro.akashi@linaro.org>2018-11-05 12:06:40 +0300
committerAlexander Graf <agraf@suse.de>2018-12-03 02:13:15 +0300
commit2419b161cc083c4927c2ee0582ccc93d1d54b3b0 (patch)
treed074befe0596ce2f032fc1c4815370dad5fa0dd3 /lib
parentb989648cf45d073674677f04ca2ac8b5f7618513 (diff)
downloadu-boot-2419b161cc083c4927c2ee0582ccc93d1d54b3b0.tar.xz
efi_loader: allow device == NULL in efi_dp_from_name()
This is a preparatory patch for use in efi_serialize_load_option() as a load option's file_path should have both a device path and a file path. Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'lib')
-rw-r--r--lib/efi_loader/efi_device_path.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c
index cdf7c7be8c..d94982314a 100644
--- a/lib/efi_loader/efi_device_path.c
+++ b/lib/efi_loader/efi_device_path.c
@@ -955,7 +955,7 @@ efi_status_t efi_dp_from_name(const char *dev, const char *devnr,
char filename[32] = { 0 }; /* dp->str is u16[32] long */
char *s;
- if (!device || (path && !file))
+ if (path && !file)
return EFI_INVALID_PARAMETER;
is_net = !strcmp(dev, "Net");
@@ -965,10 +965,12 @@ efi_status_t efi_dp_from_name(const char *dev, const char *devnr,
if (part < 0)
return EFI_INVALID_PARAMETER;
- *device = efi_dp_from_part(desc, part);
+ if (device)
+ *device = efi_dp_from_part(desc, part);
} else {
#ifdef CONFIG_NET
- *device = efi_dp_from_eth();
+ if (device)
+ *device = efi_dp_from_eth();
#endif
}
@@ -985,7 +987,8 @@ efi_status_t efi_dp_from_name(const char *dev, const char *devnr,
s = filename;
while ((s = strchr(s, '/')))
*s++ = '\\';
- *file = efi_dp_from_file(NULL, 0, filename);
+ *file = efi_dp_from_file(((!is_net && device) ? desc : NULL),
+ part, filename);
return EFI_SUCCESS;
}