diff options
Diffstat (limited to 'drivers/char/random.c')
| -rw-r--r-- | drivers/char/random.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/char/random.c b/drivers/char/random.c index 6b75713d953a..102c50d38902 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c | |||
| @@ -995,8 +995,11 @@ retry: | |||
| 995 | ibytes = min_t(size_t, ibytes, have_bytes - reserved); | 995 | ibytes = min_t(size_t, ibytes, have_bytes - reserved); |
| 996 | if (ibytes < min) | 996 | if (ibytes < min) |
| 997 | ibytes = 0; | 997 | ibytes = 0; |
| 998 | entropy_count = max_t(int, 0, | 998 | if (have_bytes >= ibytes + reserved) |
| 999 | entropy_count - (ibytes << (ENTROPY_SHIFT + 3))); | 999 | entropy_count -= ibytes << (ENTROPY_SHIFT + 3); |
| 1000 | else | ||
| 1001 | entropy_count = reserved << (ENTROPY_SHIFT + 3); | ||
| 1002 | |||
| 1000 | if (cmpxchg(&r->entropy_count, orig, entropy_count) != orig) | 1003 | if (cmpxchg(&r->entropy_count, orig, entropy_count) != orig) |
| 1001 | goto retry; | 1004 | goto retry; |
| 1002 | 1005 | ||
