Module Name: src Committed By: martin Date: Fri Aug 23 18:15:31 UTC 2024
Modified Files: src/sys/arch/x86/x86 [netbsd-10]: cpu_rng.c Log Message: Pull up following revision(s) (requested by riastradh in ticket #799): sys/arch/x86/x86/cpu_rng.c: revision 1.21 x86/cpu_rng: Fix false alarm rate of CPU RNG health test. Lower it from 1/2^32 (about one in four billion) to 1/2^256 (approximately not gonna happen squared). PR port-amd64/58122 To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.20.4.1 src/sys/arch/x86/x86/cpu_rng.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/x86/x86/cpu_rng.c diff -u src/sys/arch/x86/x86/cpu_rng.c:1.20 src/sys/arch/x86/x86/cpu_rng.c:1.20.4.1 --- src/sys/arch/x86/x86/cpu_rng.c:1.20 Thu Oct 7 12:52:27 2021 +++ src/sys/arch/x86/x86/cpu_rng.c Fri Aug 23 18:15:31 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu_rng.c,v 1.20 2021/10/07 12:52:27 msaitoh Exp $ */ +/* $NetBSD: cpu_rng.c,v 1.20.4.1 2024/08/23 18:15:31 martin Exp $ */ /*- * Copyright (c) 2015 The NetBSD Foundation, Inc. @@ -260,8 +260,12 @@ cpu_rng(enum cpu_rng_mode mode, uint64_t static void cpu_rng_get(size_t nbytes, void *cookie) { -#define N howmany(256, 64) - uint64_t buf[2*N]; + enum { + NBITS = 256, + NBYTES = howmany(NBITS, 8), + NWORDS = howmany(NBITS, 64), + }; + uint64_t buf[2*NWORDS]; unsigned i, nbits = 0; while (nbytes) { @@ -273,7 +277,7 @@ cpu_rng_get(size_t nbytes, void *cookie) */ for (i = 0; i < __arraycount(buf); i++) nbits += cpu_rng(cpu_rng_mode, &buf[i]); - if (consttime_memequal(buf, buf + N, N)) { + if (consttime_memequal(buf, buf + NWORDS, NBYTES)) { printf("cpu_rng %s: failed repetition test\n", cpu_rng_name[cpu_rng_mode]); nbits = 0; @@ -281,7 +285,6 @@ cpu_rng_get(size_t nbytes, void *cookie) rnd_add_data_sync(&cpu_rng_source, buf, sizeof buf, nbits); nbytes -= MIN(MIN(nbytes, sizeof buf), MAX(1, 8*nbits)); } -#undef N } void