From 5f3946142b7beea6ed02ae2f60a3bae933e9ae41 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 21 Aug 2022 14:17:18 +0200 Subject: [PATCH] drop queue-5.10/um-seed-rng-using-host-os-rng.patch it breaks the build --- queue-5.10/series | 1 - .../um-seed-rng-using-host-os-rng.patch | 163 ------------------ 2 files changed, 164 deletions(-) delete mode 100644 queue-5.10/um-seed-rng-using-host-os-rng.patch diff --git a/queue-5.10/series b/queue-5.10/series index 731bb14a4dd..2fcbecb5f67 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -488,7 +488,6 @@ kexec-keys-s390-make-use-of-built-in-and-secondary-k.patch dm-thin-fix-use-after-free-crash-in-dm_sm_register_t.patch timekeeping-contribute-wall-clock-to-rng-on-time-cha.patch um-allow-pm-with-suspend-to-idle.patch -um-seed-rng-using-host-os-rng.patch btrfs-reject-log-replay-if-there-is-unsupported-ro-c.patch btrfs-reset-block-group-chunk-force-if-we-have-to-wa.patch acpi-cppc-do-not-prevent-cppc-from-working-in-the-fu.patch diff --git a/queue-5.10/um-seed-rng-using-host-os-rng.patch b/queue-5.10/um-seed-rng-using-host-os-rng.patch deleted file mode 100644 index 01fb1f02e23..00000000000 --- a/queue-5.10/um-seed-rng-using-host-os-rng.patch +++ /dev/null @@ -1,163 +0,0 @@ -From c79b44779df18e44ff12f900c44285c5ae47d363 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 13 Jul 2022 01:12:21 +0200 -Subject: um: seed rng using host OS rng - -From: Jason A. Donenfeld - -[ Upstream commit 0b9ba6135d7f18b82f3d8bebb55ded725ba88e0e ] - -UML generally does not provide access to special CPU instructions like -RDRAND, and execution tends to be rather deterministic, with no real -hardware interrupts, making good randomness really very hard, if not -all together impossible. Not only is this a security eyebrow raiser, but -it's also quite annoying when trying to do various pieces of UML-based -automation that takes a long time to boot, if ever. - -Fix this by trivially calling getrandom() in the host and using that -seed as "bootloader randomness", which initializes the rng immediately -at UML boot. - -The old behavior can be restored the same way as on any other arch, by -way of CONFIG_TRUST_BOOTLOADER_RANDOMNESS=n or -random.trust_bootloader=0. So seen from that perspective, this just -makes UML act like other archs, which is positive in its own right. - -Additionally, wire up arch_get_random_{int,long}() in the same way, so -that reseeds can also make use of the host RNG, controllable by -CONFIG_TRUST_CPU_RANDOMNESS and random.trust_cpu, per usual. - -Cc: stable@vger.kernel.org -Acked-by: Johannes Berg -Acked-By: Anton Ivanov -Signed-off-by: Jason A. Donenfeld -Signed-off-by: Sasha Levin ---- - arch/um/include/asm/archrandom.h | 30 ++++++++++++++++++++++++++++++ - arch/um/include/shared/os.h | 7 +++++++ - arch/um/kernel/um_arch.c | 8 ++++++++ - arch/um/os-Linux/util.c | 6 ++++++ - 4 files changed, 51 insertions(+) - create mode 100644 arch/um/include/asm/archrandom.h - -diff --git a/arch/um/include/asm/archrandom.h b/arch/um/include/asm/archrandom.h -new file mode 100644 -index 000000000000..2f24cb96391d ---- /dev/null -+++ b/arch/um/include/asm/archrandom.h -@@ -0,0 +1,30 @@ -+/* SPDX-License-Identifier: GPL-2.0 */ -+#ifndef __ASM_UM_ARCHRANDOM_H__ -+#define __ASM_UM_ARCHRANDOM_H__ -+ -+#include -+ -+/* This is from , but better not to #include that in a global header here. */ -+ssize_t os_getrandom(void *buf, size_t len, unsigned int flags); -+ -+static inline bool __must_check arch_get_random_long(unsigned long *v) -+{ -+ return os_getrandom(v, sizeof(*v), 0) == sizeof(*v); -+} -+ -+static inline bool __must_check arch_get_random_int(unsigned int *v) -+{ -+ return os_getrandom(v, sizeof(*v), 0) == sizeof(*v); -+} -+ -+static inline bool __must_check arch_get_random_seed_long(unsigned long *v) -+{ -+ return false; -+} -+ -+static inline bool __must_check arch_get_random_seed_int(unsigned int *v) -+{ -+ return false; -+} -+ -+#endif -diff --git a/arch/um/include/shared/os.h b/arch/um/include/shared/os.h -index 2f31d44d892e..a339938b85a0 100644 ---- a/arch/um/include/shared/os.h -+++ b/arch/um/include/shared/os.h -@@ -12,6 +12,12 @@ - #include - #include - #include -+/* This is to get size_t */ -+#ifndef __UM_HOST__ -+#include -+#else -+#include -+#endif - - #define CATCH_EINTR(expr) while ((errno = 0, ((expr) < 0)) && (errno == EINTR)) - -@@ -248,6 +254,7 @@ extern void stack_protections(unsigned long address); - extern int raw(int fd); - extern void setup_machinename(char *machine_out); - extern void setup_hostinfo(char *buf, int len); -+extern ssize_t os_getrandom(void *buf, size_t len, unsigned int flags); - extern void os_dump_core(void) __attribute__ ((noreturn)); - extern void um_early_printk(const char *s, unsigned int n); - extern void os_fix_helper_signals(void); -diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c -index 52e2e2a3e4ae..ecef61f9aadf 100644 ---- a/arch/um/kernel/um_arch.c -+++ b/arch/um/kernel/um_arch.c -@@ -14,6 +14,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -342,6 +343,8 @@ int __init __weak read_initrd(void) - - void __init setup_arch(char **cmdline_p) - { -+ u8 rng_seed[32]; -+ - stack_protections((unsigned long) &init_thread_info); - setup_physmem(uml_physmem, uml_reserved, physmem_size, highmem); - mem_total_pages(physmem_size, iomem_size, highmem); -@@ -351,6 +354,11 @@ void __init setup_arch(char **cmdline_p) - strlcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); - *cmdline_p = command_line; - setup_hostinfo(host_info, sizeof host_info); -+ -+ if (os_getrandom(rng_seed, sizeof(rng_seed), 0) == sizeof(rng_seed)) { -+ add_bootloader_randomness(rng_seed, sizeof(rng_seed)); -+ memzero_explicit(rng_seed, sizeof(rng_seed)); -+ } - } - - void __init check_bugs(void) -diff --git a/arch/um/os-Linux/util.c b/arch/um/os-Linux/util.c -index 07327425d06e..fab664203f30 100644 ---- a/arch/um/os-Linux/util.c -+++ b/arch/um/os-Linux/util.c -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - #include - #include - -@@ -95,6 +96,11 @@ static inline void __attribute__ ((noreturn)) uml_abort(void) - exit(127); - } - -+ssize_t os_getrandom(void *buf, size_t len, unsigned int flags) -+{ -+ return getrandom(buf, len, flags); -+} -+ - /* - * UML helper threads must not handle SIGWINCH/INT/TERM - */ --- -2.35.1 - -- 2.47.3