Skip to content

Commit

Permalink
efi: random: reduce seed size to 32 bytes
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Ard Biesheuvel committed Oct 24, 2022
1 parent f4cd18c commit 161a438
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion drivers/firmware/efi/efi.c
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ int __init efi_config_parse_tables(const efi_config_table_t *config_tables,

seed = early_memremap(efi_rng_seed, sizeof(*seed));
if (seed != NULL) {
size = READ_ONCE(seed->size);
size = min(seed->size, EFI_RANDOM_SEED_SIZE);
early_memunmap(seed, sizeof(*seed));
} else {
pr_err("Could not map UEFI random seed!\n");
Expand Down
2 changes: 1 addition & 1 deletion include/linux/efi.h
Original file line number Diff line number Diff line change
Expand Up @@ -1222,7 +1222,7 @@ efi_status_t efi_random_get_seed(void);
arch_efi_call_virt_teardown(); \
})

#define EFI_RANDOM_SEED_SIZE 64U
#define EFI_RANDOM_SEED_SIZE 32U // BLAKE2S_HASH_SIZE

struct linux_efi_random_seed {
u32 size;
Expand Down

0 comments on commit 161a438

Please sign in to comment.