Merge tag 'random_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random

Pull random fixes from Ted Ts'o:
"In reaction to the fixes to address CVE-2018-1108, some Linux
distributions that have certain systemd versions in some cases
combined with patches to libcrypt for FIPS/FEDRAMP compliance, have
led to boot-time stalls for some hardware.

The reaction by some distros and Linux sysadmins has been to install
packages that try to do complicated things with the CPU and hope that
leads to randomness.

To mitigate this, if RDRAND is available, mix it into entropy provided
by userspace. It won't hurt, and it will probably help"

* tag 'random_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random:
random: mix rdrand with entropy sent in from userspace

Changed files
+9 -1
drivers
char
+9 -1
drivers/char/random.c
··· 1895 1895 write_pool(struct entropy_store *r, const char __user *buffer, size_t count) 1896 1896 { 1897 1897 size_t bytes; 1898 - __u32 buf[16]; 1898 + __u32 t, buf[16]; 1899 1899 const char __user *p = buffer; 1900 1900 1901 1901 while (count > 0) { 1902 + int b, i = 0; 1903 + 1902 1904 bytes = min(count, sizeof(buf)); 1903 1905 if (copy_from_user(&buf, p, bytes)) 1904 1906 return -EFAULT; 1907 + 1908 + for (b = bytes ; b > 0 ; b -= sizeof(__u32), i++) { 1909 + if (!arch_get_random_int(&t)) 1910 + break; 1911 + buf[i] ^= t; 1912 + } 1905 1913 1906 1914 count -= bytes; 1907 1915 p += bytes;