From f04b796dcce93be266234a9220ab0f42c5eec5ff Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Thu, 12 Mar 2026 14:35:01 +0000 Subject: util/nvmutil: add jitter to fallback_rand entropy Signed-off-by: Leah Rowe --- util/nvmutil/nvmutil.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'util/nvmutil') diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index 846eb2c3..3608c439 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -164,6 +164,7 @@ static void set_mac_nib(size_t mac_str_pos, static uint16_t hextonum(char ch_s); static uint16_t rhex(void); static uint16_t fallback_rand(void); +static unsigned long entropy_jitter(void); static void write_mac_part(size_t partnum); /* @@ -1034,7 +1035,8 @@ fallback_rand(void) ^ (unsigned long)tv.tv_usec ^ (unsigned long)getpid() ^ (unsigned long)&mix - ^ counter++; + ^ counter++ + ^ entropy_jitter(); /* * Stack addresses can vary between @@ -1047,6 +1049,25 @@ fallback_rand(void) return (uint16_t)(mix & 0xf); } +static unsigned long +entropy_jitter(void) +{ + struct timeval a, b; + unsigned long mix = 0; + int i; + + for (i = 0; i < 8; i++) { + gettimeofday(&a, NULL); + getpid(); + gettimeofday(&b, NULL); + + mix ^= (unsigned long)(b.tv_usec - a.tv_usec); + mix ^= (unsigned long)&mix; + } + + return mix; +} + static void write_mac_part(size_t partnum) { -- cgit v1.2.1