summaryrefslogtreecommitdiffstats
path: root/drivers/firmware/efi
diff options
context:
space:
mode:
authorTim Schumacher <timschumi@gmx.de>2024-03-28 21:50:30 +0100
committerArd Biesheuvel <ardb@kernel.org>2024-03-29 08:36:52 +0100
commit24427cda90cbbb9015c73e2dd3329a116a00c8de (patch)
tree212e1663ec17eddd52b05b05e968589a39cb9baa /drivers/firmware/efi
parentLinux 6.9-rc1 (diff)
downloadlinux-24427cda90cbbb9015c73e2dd3329a116a00c8de.tar.xz
linux-24427cda90cbbb9015c73e2dd3329a116a00c8de.zip
efi: pstore: Request at most 512 bytes for variable names
Work around a quirk in a few old (2011-ish) UEFI implementations, where a call to `GetNextVariableName` with a buffer size larger than 512 bytes will always return EFI_INVALID_PARAMETER. This was already done to efivarfs in commit f45812cc23fb ("efivarfs: Request at most 512 bytes for variable names"), but the second copy of the variable iteration implementation was overlooked. Signed-off-by: Tim Schumacher <timschumi@gmx.de> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Diffstat (limited to 'drivers/firmware/efi')
-rw-r--r--drivers/firmware/efi/efi-pstore.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/firmware/efi/efi-pstore.c b/drivers/firmware/efi/efi-pstore.c
index 833cbb995dd3..5b9dc26e6bcb 100644
--- a/drivers/firmware/efi/efi-pstore.c
+++ b/drivers/firmware/efi/efi-pstore.c
@@ -162,7 +162,15 @@ static ssize_t efi_pstore_read(struct pstore_record *record)
efi_status_t status;
for (;;) {
- varname_size = 1024;
+ /*
+ * A small set of old UEFI implementations reject sizes
+ * above a certain threshold, the lowest seen in the wild
+ * is 512.
+ *
+ * TODO: Commonize with the iteration implementation in
+ * fs/efivarfs to keep all the quirks in one place.
+ */
+ varname_size = 512;
/*
* If this is the first read() call in the pstore enumeration,