lkml.org 
[lkml]   [2020]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH 30/41] random: add a queued_entropy instance to struct fast_pool
    Date
    When health tests are introduced with upcoming patches, it will become
    necessary to keep entropy queued across add_interrupt_randomness()
    invocations for later dispatch to the global balance.

    Prepare for this by adding a struct queued_entropy member to the per-CPU
    fast_pool. Use it in place of that queue with automatic storage duration
    in add_interrupt_randomness().

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

    diff --git a/drivers/char/random.c b/drivers/char/random.c
    index 55e784a5a2ec..37746df53acf 100644
    --- a/drivers/char/random.c
    +++ b/drivers/char/random.c
    @@ -885,6 +885,7 @@ struct fast_pool {
    unsigned short reg_idx;
    unsigned char count;
    int event_entropy_shift;
    + struct queued_entropy q;
    };

    /*
    @@ -1655,7 +1656,7 @@ void add_interrupt_randomness(int irq, int irq_flags)
    __u32 c_high, j_high;
    __u64 ip;
    bool reseed;
    - struct queued_entropy q = { 0 };
    + struct queued_entropy *q = &fast_pool->q;
    unsigned int nfrac;

    if (cycles == 0)
    @@ -1700,9 +1701,9 @@ void add_interrupt_randomness(int irq, int irq_flags)
    nfrac = fast_pool_entropy(fast_pool->count,
    fast_pool->event_entropy_shift);
    }
    - __queue_entropy(r, &q, nfrac);
    + __queue_entropy(r, q, nfrac);
    __mix_pool_bytes(r, &fast_pool->pool, sizeof(fast_pool->pool));
    - reseed = __dispatch_queued_entropy_fast(r, &q);
    + reseed = __dispatch_queued_entropy_fast(r, q);
    spin_unlock(&r->lock);

    fast_pool->last = now;
    --
    2.26.2
    \
     
     \ /
      Last update: 2020-09-21 10:02    [W:4.020 / U:0.424 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site