In an effort to drop __credit_entropy_bits_fast() in favor of the new
__queue_entropy()/__dispatch_queued_entropy_fast() API, convert
add_timer_randomness() from the former to the latter.

There is no change in functionality at this point, because
__credit_entropy_bits_fast() has already been reimplemented on top of the
new API before.

Signed-off-by: Nicolai Stange <nsta...@suse.de>
---
 drivers/char/random.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/char/random.c b/drivers/char/random.c
index b91d1fc08ac5..e8c86abde901 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1400,6 +1400,7 @@ static void add_timer_randomness(struct timer_rand_state 
*state, unsigned num)
        long delta, delta2, delta3;
        bool reseed;
        unsigned long flags;
+       struct queued_entropy q = { 0 };
 
        sample.jiffies = jiffies;
        sample.cycles = random_get_entropy();
@@ -1432,13 +1433,14 @@ static void add_timer_randomness(struct 
timer_rand_state *state, unsigned num)
 
        r = &input_pool;
        spin_lock_irqsave(&r->lock, flags);
-       __mix_pool_bytes(r, &sample, sizeof(sample));
        /*
         * delta is now minimum absolute delta.
         * Round down by 1 bit on general principles,
         * and limit entropy estimate to 12 bits.
         */
-       reseed = __credit_entropy_bits_fast(r, min_t(int, fls(delta>>1), 11));
+       __queue_entropy(r, &q, min_t(int, fls(delta>>1), 11) << ENTROPY_SHIFT);
+       __mix_pool_bytes(r, &sample, sizeof(sample));
+       reseed = __dispatch_queued_entropy_fast(r, &q);
        spin_unlock_irqrestore(&r->lock, flags);
        if (reseed)
                crng_reseed(&primary_crng, r);
-- 
2.26.2

Reply via email to