diff options
author | Tom Rini <trini@konsulko.com> | 2021-02-27 08:06:10 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2021-02-27 08:06:10 -0500 |
commit | 9935050b443a7beda368e7fedb1f8611653eeedb (patch) | |
tree | abb9031f6343ebf18ac7e28391a65704c72c9adf /lib/efi_loader | |
parent | 08cca188c120b8337600091c94dc0e211cd03e10 (diff) | |
parent | a2c3f1bca4bf21371d041d1de589039aa3459e91 (diff) |
Merge tag 'efi-2021-04-rc3-2' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
Pull request for efi-2021-04-rc3-2
Bug fixes:
* debug build for mkeficapsule
* limit output length for VenHw, VenMedia
* ACPI tables must be in EfiACPIReclaimMemory
Diffstat (limited to 'lib/efi_loader')
-rw-r--r-- | lib/efi_loader/efi_acpi.c | 3 | ||||
-rw-r--r-- | lib/efi_loader/efi_device_path_to_text.c | 6 |
2 files changed, 5 insertions, 4 deletions
diff --git a/lib/efi_loader/efi_acpi.c b/lib/efi_loader/efi_acpi.c index 585b2d2b636..a62c34009cc 100644 --- a/lib/efi_loader/efi_acpi.c +++ b/lib/efi_loader/efi_acpi.c @@ -25,7 +25,7 @@ efi_status_t efi_acpi_register(void) /* Reserve 64kiB page for ACPI */ ret = efi_allocate_pages(EFI_ALLOCATE_MAX_ADDRESS, - EFI_RUNTIME_SERVICES_DATA, 16, &acpi); + EFI_ACPI_RECLAIM_MEMORY, 16, &acpi); if (ret != EFI_SUCCESS) return ret; @@ -34,7 +34,6 @@ efi_status_t efi_acpi_register(void) * a 4k-aligned address, so it is safe to assume that * write_acpi_tables() will write the table at that address. */ - assert(!(acpi & 0xf)); write_acpi_tables(acpi); /* And expose them to our EFI payload */ diff --git a/lib/efi_loader/efi_device_path_to_text.c b/lib/efi_loader/efi_device_path_to_text.c index 81b8ac23ba5..edc9fdc3870 100644 --- a/lib/efi_loader/efi_device_path_to_text.c +++ b/lib/efi_loader/efi_device_path_to_text.c @@ -67,7 +67,8 @@ static char *dp_hardware(char *s, struct efi_device_path *dp) s += sprintf(s, "VenHw(%pUl", &vdp->guid); n = (int)vdp->dp.length - sizeof(struct efi_device_path_vendor); - if (n > 0) { + /* Node must fit into MAX_NODE_LEN) */ + if (n > 0 && n < MAX_NODE_LEN / 2 - 22) { s += sprintf(s, ","); for (i = 0; i < n; ++i) s += sprintf(s, "%02x", vdp->vendor_data[i]); @@ -251,7 +252,8 @@ static char *dp_media(char *s, struct efi_device_path *dp) s += sprintf(s, "VenMedia(%pUl", &vdp->guid); n = (int)vdp->dp.length - sizeof(struct efi_device_path_vendor); - if (n > 0) { + /* Node must fit into MAX_NODE_LEN) */ + if (n > 0 && n < MAX_NODE_LEN / 2 - 24) { s += sprintf(s, ","); for (i = 0; i < n; ++i) s += sprintf(s, "%02x", vdp->vendor_data[i]); |