diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2017-05-30 13:56:44 +1000 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2017-05-30 13:56:44 +1000 |
commit | edfad004328c43a0eeb5561657b2ebd37de10c6c (patch) | |
tree | 02b2f6bc2d9d21cc607e47c0814a35acc2ba0b36 | |
parent | 260e41f8cb4431efb31492688394b797e7cd7f89 (diff) | |
parent | 9dfa7bba35ac08a63565d58c454dccb7e1bb0a08 (diff) |
Merge remote-tracking branch 'random/dev'
-rw-r--r-- | drivers/char/random.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/char/random.c b/drivers/char/random.c index 0ab024918907..a561f0c2f428 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -1097,12 +1097,16 @@ static void add_interrupt_bench(cycles_t start) static __u32 get_reg(struct fast_pool *f, struct pt_regs *regs) { __u32 *ptr = (__u32 *) regs; + unsigned long flags; if (regs == NULL) return 0; + local_irq_save(flags); if (f->reg_idx >= sizeof(struct pt_regs) / sizeof(__u32)) f->reg_idx = 0; - return *(ptr + f->reg_idx++); + ptr += f->reg_idx++; + local_irq_restore(flags); + return *ptr; } void add_interrupt_randomness(int irq, int irq_flags) |