Messages in this thread | | | Date | Fri, 13 May 2022 12:23:13 +0200 | From | "Jason A. Donenfeld" <> | Subject | Re: [PATCH 1/2] random: avoid init'ing twice in credit race |
| |
Hi Dominik,
On Fri, May 13, 2022 at 08:23:40AM +0200, Dominik Brodowski wrote: > Am Mon, May 09, 2022 at 02:14:08PM +0200 schrieb Jason A. Donenfeld: > > Since all changes of crng_init now go through credit_init_bits(), we can > > fix a long standing race in which two concurrent callers of > > credit_init_bits() have the new bit count >= some threshold, but are > > doing so with crng_init as a lower threshold, checked outside of a lock, > > resulting in crng_reseed() or similar being called twice. > > Sidenote: crng_reseed() did manage quite fine if called twice in short > order.
With regards to crng_finialize, it did, but not with regards to prematurely emptying patches and all that. IOW, buggy but not that bad.
> > > In order to fix this, we can use the original cmpxchg value of the bit > > count, and only change crng_init when the bit count transitions from > > below a threshold to meeting the threshold. > > > > Cc: Dominik Brodowski <linux@dominikbrodowski.net> > > Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> > > Reviewed-by: Dominik Brodowski <linux@dominikbrodowski.net> > > Thanks, > Dominik
Jason
| |