summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2016-04-11 14:16:20 (GMT)
committerTom Rini <trini@konsulko.com>2016-04-18 21:11:37 (GMT)
commitecbe1a07c507d37aeb5f0f9ce1c4cc20c70fec64 (patch)
tree976d4baec38a0a6fe6508985401681ead88fb572
parentc07ad7c03588ab7b8f87b6567ac9202cf32b9bbe (diff)
downloadu-boot-ecbe1a07c507d37aeb5f0f9ce1c4cc20c70fec64.tar.xz
efi_loader: Increase path string to 32 characters
Whenever we want to tell our payload about a path, we limit ourselves to a reasonable amount of characters. So far we only passed in device names - exceeding 16 chars was unlikely there. However by now we also pass real file path information, so let's increase the limit to 32 characters. That way common paths like "boot/efi/bootaa64.efi" fit just fine. Signed-off-by: Alexander Graf <agraf@suse.de>
-rw-r--r--cmd/bootefi.c2
-rw-r--r--include/efi_api.h2
-rw-r--r--lib/efi_loader/efi_disk.c4
3 files changed, 4 insertions, 4 deletions
diff --git a/cmd/bootefi.c b/cmd/bootefi.c
index adcf645..f502996 100644
--- a/cmd/bootefi.c
+++ b/cmd/bootefi.c
@@ -208,7 +208,7 @@ U_BOOT_CMD(
void efi_set_bootdev(const char *dev, const char *devnr, const char *path)
{
__maybe_unused struct blk_desc *desc;
- char devname[16] = { 0 }; /* dp->str is u16[16] long */
+ char devname[32] = { 0 }; /* dp->str is u16[32] long */
char *colon;
/* Assemble the condensed device name we use in efi_disk.c */
diff --git a/include/efi_api.h b/include/efi_api.h
index 6960448..51d7586 100644
--- a/include/efi_api.h
+++ b/include/efi_api.h
@@ -259,7 +259,7 @@ struct efi_device_path {
struct efi_device_path_file_path {
struct efi_device_path dp;
- u16 str[16];
+ u16 str[32];
};
#define BLOCK_IO_GUID \
diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
index b3d56a8..28e5b7f 100644
--- a/lib/efi_loader/efi_disk.c
+++ b/lib/efi_loader/efi_disk.c
@@ -194,7 +194,7 @@ static int efi_disk_create_eltorito(struct blk_desc *desc,
{
int disks = 0;
#ifdef CONFIG_ISO_PARTITION
- char devname[16] = { 0 }; /* dp->str is u16[16] long */
+ char devname[32] = { 0 }; /* dp->str is u16[32] long */
disk_partition_t info;
int part = 1;
@@ -231,7 +231,7 @@ int efi_disk_register(void)
printf("Scanning disks on %s...\n", cur_drvr->name);
for (i = 0; i < 4; i++) {
struct blk_desc *desc;
- char devname[16] = { 0 }; /* dp->str is u16[16] long */
+ char devname[32] = { 0 }; /* dp->str is u16[32] long */
desc = blk_get_dev(cur_drvr->name, i);
if (!desc)