diff mbox series

random: throttle hwrng writes if no entropy is credited

Message ID 20220920141438.2782446-1-Jason@zx2c4.com
State New
Headers show
Series random: throttle hwrng writes if no entropy is credited | expand

Commit Message

Jason A. Donenfeld Sept. 20, 2022, 2:14 p.m. UTC
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(-)

Comments

Dominik Brodowski Sept. 22, 2022, 1:51 p.m. UTC | #1
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
>
Jason A. Donenfeld Sept. 22, 2022, 2:38 p.m. UTC | #2
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 mbox series

Patch

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);