Message ID | 20220408182145.142506-5-Jason@zx2c4.com |
---|---|
State | New |
Headers | show |
Series | archs/random: fallback to using sched_clock() if no cycle counter | expand |
diff --git a/arch/mips/include/asm/timex.h b/arch/mips/include/asm/timex.h index b05bb70a2e46..1de8ded08bb7 100644 --- a/arch/mips/include/asm/timex.h +++ b/arch/mips/include/asm/timex.h @@ -12,6 +12,7 @@ #ifdef __KERNEL__ #include <linux/compiler.h> +#include <linux/sched/clock.h> #include <asm/cpu.h> #include <asm/cpu-features.h> @@ -94,7 +95,7 @@ static inline unsigned long random_get_entropy(void) else if (likely(imp != PRID_IMP_R6000 && imp != PRID_IMP_R6000A)) return read_c0_random(); else - return 0; /* no usable register */ + return sched_clock(); /* no usable register */ } #define random_get_entropy random_get_entropy
In the event that random_get_entropy() can't access a cycle counter or similar, falling back to returning 0 is really not the best we can do. Instead, at least calling sched_clock() would be preferable, because that always needs to return _something_, even falling back to jiffies eventually. It's not as though sched_clock() is super high precision or guaranteed to be entropic, but basically anything that's not zero all the time is better than returning zero all the time. Cc: Arnd Bergmann <arnd@arndb.de> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> --- arch/mips/include/asm/timex.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)