Skip to content

Commit 161a438

Browse files
committed
efi: random: reduce seed size to 32 bytes
We no longer need at least 64 bytes of random seed to permit the early crng init to complete. The RNG is now based on Blake2s, so reduce the EFI seed size to the Blake2s hash size, which is sufficient for our purposes. While at it, drop the READ_ONCE(), which was supposed to prevent size from being evaluated after seed was unmapped. However, this cannot actually happen, so READ_ONCE() is unnecessary here. Cc: <stable@vger.kernel.org> # v4.14+ Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com> Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
1 parent f4cd18c commit 161a438

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

drivers/firmware/efi/efi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ int __init efi_config_parse_tables(const efi_config_table_t *config_tables,
611611

612612
seed = early_memremap(efi_rng_seed, sizeof(*seed));
613613
if (seed != NULL) {
614-
size = READ_ONCE(seed->size);
614+
size = min(seed->size, EFI_RANDOM_SEED_SIZE);
615615
early_memunmap(seed, sizeof(*seed));
616616
} else {
617617
pr_err("Could not map UEFI random seed!\n");

include/linux/efi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1222,7 +1222,7 @@ efi_status_t efi_random_get_seed(void);
12221222
arch_efi_call_virt_teardown(); \
12231223
})
12241224

1225-
#define EFI_RANDOM_SEED_SIZE 64U
1225+
#define EFI_RANDOM_SEED_SIZE 32U // BLAKE2S_HASH_SIZE
12261226

12271227
struct linux_efi_random_seed {
12281228
u32 size;

0 commit comments

Comments
 (0)