diff --git a/drivers/char/random.c b/drivers/char/random.c index 3823cb2e3b9ac7c302ca1bf9321660200629f4c7..a754132336bad856f3cd849cd3f804328bf7caa2 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -457,7 +457,7 @@ static void __add_entropy_words(struct entropy_store *r, const __u32 *in, unsigned long i, add_ptr, tap1, tap2, tap3, tap4, tap5; int input_rotate; int wordmask = r->poolinfo->poolwords - 1; - __u32 w, next_w; + __u32 w; unsigned long flags; /* Taps are constant, so we can load them without holding r->lock. */ @@ -466,17 +466,13 @@ static void __add_entropy_words(struct entropy_store *r, const __u32 *in, tap3 = r->poolinfo->tap3; tap4 = r->poolinfo->tap4; tap5 = r->poolinfo->tap5; - next_w = *in++; spin_lock_irqsave(&r->lock, flags); - prefetch_range(r->pool, wordmask); input_rotate = r->input_rotate; add_ptr = r->add_ptr; while (nwords--) { - w = rol32(next_w, input_rotate & 31); - if (nwords > 0) - next_w = *in++; + w = rol32(*in++, input_rotate & 31); i = add_ptr = (add_ptr - 1) & wordmask; /* XOR in the various taps */