2022-09-20 14:19:46

by Jason A. Donenfeld

[permalink] [raw]
Subject: [PATCH] random: throttle hwrng writes if no entropy is credited

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 <[email protected]>
Cc: Herbert Xu <[email protected]>
Signed-off-by: Jason A. Donenfeld <[email protected]>
---
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


2022-09-22 14:09:38

by Dominik Brodowski

[permalink] [raw]
Subject: Re: [PATCH] random: throttle hwrng writes if no entropy is credited

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 <[email protected]>
> Cc: Herbert Xu <[email protected]>
> Signed-off-by: Jason A. Donenfeld <[email protected]>
> ---
> 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
>

2022-09-22 14:41:29

by Jason A. Donenfeld

[permalink] [raw]
Subject: Re: [PATCH] random: throttle hwrng writes if no entropy is credited

On Thu, Sep 22, 2022 at 4:01 PM Dominik Brodowski
<[email protected]dowski.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.