aboutsummaryrefslogtreecommitdiffstats
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
parent4cece764965020c22cff7665b18a012006359095 (diff)
downloadefi-24427cda90cbbb9015c73e2dd3329a116a00c8de.tar.gz
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>
-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 833cbb995dd3f..5b9dc26e6bcb9 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,