Commit ac47961e authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Lipeng Sang
Browse files

efi: random: reduce seed size to 32 bytes

stable inclusion
from stable-v5.10.154
commit 83294f7c7759e1e4c3909edc2e2c1dfbb159e153
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I64YCB

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=83294f7c7759e1e4c3909edc2e2c1dfbb159e153



--------------------------------

commit 161a438d upstream.

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: default avatarArd Biesheuvel <ardb@kernel.org>
Reviewed-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
Acked-by: default avatarIlias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarLipeng Sang <sanglipeng1@jd.com>
parent 5b8dab0c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -616,7 +616,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");
+1 −1
Original line number Diff line number Diff line
@@ -1180,7 +1180,7 @@ void efi_retrieve_tpm2_eventlog(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;