diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2018-08-09 12:12:52 +0200 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2018-08-09 12:12:52 +0200 |
commit | d0ed4c60abfb9a4ab6cd416d1dea9df6266f8fc7 (patch) | |
tree | 8fd3af1a9e788333e85d2a51a4fc2a9858a9a95a /drivers/char/random.c | |
parent | 72a361a5b91c77b33ab2533674fdcec4de3278d0 (diff) | |
parent | aba941392aeef2d1bc064a1e4b09293473ef7b9b (diff) |
Merge branch 'acpi-scan' to satisfy dependencies.
Diffstat (limited to 'drivers/char/random.c')
-rw-r--r-- | drivers/char/random.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/char/random.c b/drivers/char/random.c index cd888d4ee605..bd449ad52442 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -1895,14 +1895,22 @@ static int write_pool(struct entropy_store *r, const char __user *buffer, size_t count) { size_t bytes; - __u32 buf[16]; + __u32 t, buf[16]; const char __user *p = buffer; while (count > 0) { + int b, i = 0; + bytes = min(count, sizeof(buf)); if (copy_from_user(&buf, p, bytes)) return -EFAULT; + for (b = bytes ; b > 0 ; b -= sizeof(__u32), i++) { + if (!arch_get_random_int(&t)) + break; + buf[i] ^= t; + } + count -= bytes; p += bytes; |