Message ID | 20220920141438.2782446-1-Jason@zx2c4.com |
---|---|
State | New |
Headers | show |
Series | random: throttle hwrng writes if no entropy is credited | expand |
Hi Jason, thanks for splitting this change out of my other patch. You can add my Signed-off-by, but I'd like to suggest rewriting the commit message as follows (please modify as needed): In case a hwrng source does not provide (trusted) entropy, it cannot assist in initializing the CRNG. Therefore, in case add_hwgenerator_randomness() is called with the entropy parameter set to zero, go to sleep until one reseed interval has passed. While the hwrng thread currently only runs under conditions where this is non-zero, this change is not harmful and prepares for future updates to the hwrng core. Thanks, Dominik Am Tue, Sep 20, 2022 at 04:14:38PM +0200 schrieb Jason A. Donenfeld: > This value is currently never set to zero, because the hwrng thread only > runs if it's going to be non-zero. This is an oversight, however, that > Dominik is working on fixing. In preparation for this, and so that > there's less coordination required between my tree and Herbert's, make > this currently useless, but not harmful, change here now, in hopes that > Dominik can make the corresponding change in the hwrng core later. > > Cc: Dominik Brodowski <linux@dominikbrodowski.net> > Cc: Herbert Xu <herbert@gondor.apana.org.au> > Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> > --- > drivers/char/random.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/char/random.c b/drivers/char/random.c > index 16e0c5f6cf2f..520a385c7dab 100644 > --- a/drivers/char/random.c > +++ b/drivers/char/random.c > @@ -865,9 +865,9 @@ void add_hwgenerator_randomness(const void *buf, size_t len, size_t entropy) > > /* > * Throttle writing to once every reseed interval, unless we're not yet > - * initialized. > + * initialized or no entropy is credited. > */ > - if (!kthread_should_stop() && crng_ready()) > + if (!kthread_should_stop() && (crng_ready() || !entropy)) > schedule_timeout_interruptible(crng_reseed_interval()); > } > EXPORT_SYMBOL_GPL(add_hwgenerator_randomness); > -- > 2.37.3 >
On Thu, Sep 22, 2022 at 4:01 PM Dominik Brodowski <linux@dominikbrodowski.net> wrote: > > Hi Jason, > > thanks for splitting this change out of my other patch. You can add my > Signed-off-by, but I'd like to suggest rewriting the commit message as > follows (please modify as needed): > > > In case a hwrng source does not provide (trusted) entropy, it cannot > assist in initializing the CRNG. Therefore, in case > add_hwgenerator_randomness() is called with the entropy parameter set > to zero, go to sleep until one reseed interval has passed. > > While the hwrng thread currently only runs under conditions where this > is non-zero, this change is not harmful and prepares for future updates > to the hwrng core. Will do.
diff --git a/drivers/char/random.c b/drivers/char/random.c index 16e0c5f6cf2f..520a385c7dab 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -865,9 +865,9 @@ void add_hwgenerator_randomness(const void *buf, size_t len, size_t entropy) /* * Throttle writing to once every reseed interval, unless we're not yet - * initialized. + * initialized or no entropy is credited. */ - if (!kthread_should_stop() && crng_ready()) + if (!kthread_should_stop() && (crng_ready() || !entropy)) schedule_timeout_interruptible(crng_reseed_interval()); } EXPORT_SYMBOL_GPL(add_hwgenerator_randomness);
This value is currently never set to zero, because the hwrng thread only runs if it's going to be non-zero. This is an oversight, however, that Dominik is working on fixing. In preparation for this, and so that there's less coordination required between my tree and Herbert's, make this currently useless, but not harmful, change here now, in hopes that Dominik can make the corresponding change in the hwrng core later. Cc: Dominik Brodowski <linux@dominikbrodowski.net> Cc: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> --- drivers/char/random.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)