Messages in this thread Patch in this message | | | Date | Sun, 25 Aug 2019 20:29:22 +0200 | From | Borislav Petkov <> | Subject | Re: [GIT pull] x86/urgent for 5.3-rc5 |
| |
On Sun, Aug 25, 2019 at 10:37:47AM -0700, Linus Torvalds wrote: > On Sun, Aug 25, 2019 at 10:30 AM Borislav Petkov <bp@suse.de> wrote: > > > > Should we do that somewhere in the early boot code by adding a WARN_ON() > > or so and see who screams? > > It might be a good idea, just to see if it ever happens (again). > > It doesn't even have to be early boot. It's probably more important to > let the user _know_, than it is to then disable the rdrand > instruction. > > Particularly since we might as well just do it in general, and in the > general case we don't even know how to hide it in cpuid. So maybe just > something like "read the rdrand value a few times, make sure it > actually changes" at CPU bring-up (both boot and resume) > > It sounds like a stupid test, but considering that AMD has had this > particular bug now several times over at least three different > generations, maybe it's not a stupid test after all.
My lazy, sticky Sunday brain could come up only with this:
--- diff --git a/arch/x86/kernel/cpu/rdrand.c b/arch/x86/kernel/cpu/rdrand.c index 5c900f9527ff..0130a4f4f836 100644 --- a/arch/x86/kernel/cpu/rdrand.c +++ b/arch/x86/kernel/cpu/rdrand.c @@ -29,7 +29,8 @@ __setup("nordrand", x86_rdrand_setup); #ifdef CONFIG_ARCH_RANDOM void x86_init_rdrand(struct cpuinfo_x86 *c) { - unsigned long tmp; + unsigned int changed = 0; + unsigned long tmp, prev; int i; if (!cpu_has(c, X86_FEATURE_RDRAND)) @@ -42,5 +43,24 @@ void x86_init_rdrand(struct cpuinfo_x86 *c) return; } } + + /* + * Stupid sanity-check whether RDRAND does *actually* generate + * some at least random-looking data. + */ + prev = tmp; + for (i = 0; i < SANITY_CHECK_LOOPS; i++) { + if (rdrand_long(&tmp)) { + if (prev != tmp) + changed++; + + prev = tmp; + } + } + + if (!changed) + WARN(1, +"RDRAND gives funky smelling output, might consider not using it by booting with \"nordrand\""); + } #endif --- > Who knows what the Chinese CPU's that use the AMD core do? Hygon? > Whatever. Did they get the firmware fixes?
Pu Wen?
-- Regards/Gruss, Boris.
SUSE Software Solutions Germany GmbH, GF: Felix Imendörffer, HRB 247165, AG München
| |