diff options
author | Tim Schumacher <timschumi@gmx.de> | 2024-03-28 21:50:30 +0100 |
---|---|---|
committer | Ard Biesheuvel <ardb@kernel.org> | 2024-03-29 08:36:52 +0100 |
commit | 24427cda90cbbb9015c73e2dd3329a116a00c8de (patch) | |
tree | 212e1663ec17eddd52b05b05e968589a39cb9baa /drivers/firmware/efi | |
parent | Linux 6.9-rc1 (diff) | |
download | linux-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.c | 10 |
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, |