Messages in this thread | | | Date | Fri, 13 May 2022 08:24:19 +0200 | From | Dominik Brodowski <> | Subject | Re: [PATCH 2/2] random: move initialization out of reseeding hot path |
| |
Am Mon, May 09, 2022 at 02:14:09PM +0200 schrieb Jason A. Donenfeld: > Initialization happens once -- by way of credit_init_bits() -- and then > it never happens again. Therefore, it doesn't need to be in > crng_reseed(), which is a hot path that is called multiple times. It > also doesn't make sense to have there, as initialization activity is > better associated with initialization routines. > > After the prior commit, crng_reseed() now won't be called by multiple > concurrent callers, which means that we can safely move the > "finialize_init" logic into crng_init_bits() unconditionally. > > Cc: Dominik Brodowski <linux@dominikbrodowski.net> > Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> > --- > drivers/char/random.c | 43 +++++++++++++++++++------------------------ > 1 file changed, 19 insertions(+), 24 deletions(-) > > diff --git a/drivers/char/random.c b/drivers/char/random.c > index 79409cf27a25..1598bb40376e 100644 > --- a/drivers/char/random.c > +++ b/drivers/char/random.c > @@ -266,7 +266,6 @@ static void crng_reseed(void) > unsigned long flags; > unsigned long next_gen; > u8 key[CHACHA_KEY_SIZE]; > - bool finalize_init = false; > > extract_entropy(key, sizeof(key)); > > @@ -283,28 +282,9 @@ static void crng_reseed(void) > ++next_gen; > WRITE_ONCE(base_crng.generation, next_gen); > WRITE_ONCE(base_crng.birth, jiffies); > - if (!crng_ready()) { > - crng_init = CRNG_READY; > - finalize_init = true; > - } > + crng_init = CRNG_READY;
Why unconditionally (you revert that bit in the static branch patch and make it conditional again; so I see no reason for that here)?
Otherwise, looks good:
Reviewed-by: Dominik Brodowski <linux@dominikbrodowski.net>
Thanks, Dominik
| |