[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAKQ1sVM9SMYVTSZYaGuPDhQHfyEOFSxBL8PNixyaN4pR2PWMxQ@mail.gmail.com>
Date: Tue, 1 Sep 2020 10:33:40 +0200
From: Yann Ylavic <ylavic.dev@...il.com>
To: Willy Tarreau <w@....eu>
Cc: linux-kernel@...r.kernel.org,
Linux Kernel Network Developers <netdev@...r.kernel.org>,
Sedat Dilek <sedat.dilek@...il.com>,
George Spelvin <lkml@....org>,
Amit Klein <aksecurity@...il.com>,
Eric Dumazet <edumazet@...gle.com>,
"Jason A. Donenfeld" <Jason@...c4.com>,
Andy Lutomirski <luto@...nel.org>,
Kees Cook <keescook@...omium.org>,
Thomas Gleixner <tglx@...utronix.de>,
Peter Zijlstra <peterz@...radead.org>,
Linus Torvalds <torvalds@...ux-foundation.org>, tytso@....edu,
Florian Westphal <fw@...len.de>,
Marc Plumb <lkml.mplumb@...il.com>
Subject: Re: [PATCH 1/2] random32: make prandom_u32() output unpredictable
On Tue, Sep 1, 2020 at 8:45 AM Willy Tarreau <w@....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.
Powered by blists - more mailing lists