lkml.org 
[lkml]   [2020]   [Sep]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [PATCH 1/2] random32: make prandom_u32() output unpredictable
On Tue, Sep 1, 2020 at 8:45 AM Willy Tarreau <w@1wt.eu> wrote:
>
> +/*
> + * Generate some initially weak seeding values to allow
> + * the prandom_u32() engine to be started.
> + */
> +static int __init prandom_init_early(void)
> +{
> + int i;
> + unsigned long v0, v1, v2, v3;
> +
> + if (!arch_get_random_long(&v0))
> + v0 = jiffies;
> + if (!arch_get_random_long(&v1))
> + v0 = random_get_entropy();

Shouldn't the above be:
v1 = random_get_entropy();
?

> + v2 = v0 ^ PRND_K0;
> + v3 = v1 ^ PRND_K1;
> +
> + for_each_possible_cpu(i) {
> + struct siprand_state *state;
> +
> + v3 ^= i;
> + PRND_SIPROUND(v0, v1, v2, v3);
> + PRND_SIPROUND(v0, v1, v2, v3);
> + v0 ^= i;
> +
> + state = per_cpu_ptr(&net_rand_state, i);
> + state->v0 = v0; state->v1 = v1;
> + state->v2 = v2; state->v3 = v3;
> + }
> +
> + return 0;
> +}
> +core_initcall(prandom_init_early);


Regards;
Yann.

\
 
 \ /
  Last update: 2020-09-01 10:34    [W:0.101 / U:0.056 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site