efi_loader: Increase path string to 32 characters
authorAlexander Graf <agraf@suse.de>
Mon, 11 Apr 2016 14:16:20 +0000 (16:16 +0200)
committerTom Rini <trini@konsulko.com>
Mon, 18 Apr 2016 21:11:37 +0000 (17:11 -0400)
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>
cmd/bootefi.c
include/efi_api.h
lib/efi_loader/efi_disk.c

index adcf6454f422adc1c373d812e8f05460fb8aa465..f502996a9619a434c52a36643122e70596e3e9dd 100644 (file)
@@ -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 */
index 696044850b85d760acc163c87199a3abaeea3c84..51d7586e6347f8e6244b845cf7dc1d59a1e037dd 100644 (file)
@@ -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 \
index b3d56a88f086a26e66bb7f6a18cbea115fe4d532..28e5b7fce59ce1b4470b4c82fd7e5d5c09899b52 100644 (file)
@@ -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)