Commit c2bc3a316a7281f67e36b34dac2802cbe36a9128
Exists in
master
and in
38 other branches
Merge branch 'x86/rdrand' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
* 'x86/rdrand' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: random: Adjust the number of loops when initializing random: Use arch-specific RNG to initialize the entropy store
Showing 1 changed file Side-by-side Diff
drivers/char/random.c
... | ... | @@ -965,6 +965,7 @@ |
965 | 965 | */ |
966 | 966 | static void init_std_data(struct entropy_store *r) |
967 | 967 | { |
968 | + int i; | |
968 | 969 | ktime_t now; |
969 | 970 | unsigned long flags; |
970 | 971 | |
... | ... | @@ -974,6 +975,11 @@ |
974 | 975 | |
975 | 976 | now = ktime_get_real(); |
976 | 977 | mix_pool_bytes(r, &now, sizeof(now)); |
978 | + for (i = r->poolinfo->POOLBYTES; i > 0; i -= sizeof flags) { | |
979 | + if (!arch_get_random_long(&flags)) | |
980 | + break; | |
981 | + mix_pool_bytes(r, &flags, sizeof(flags)); | |
982 | + } | |
977 | 983 | mix_pool_bytes(r, utsname(), sizeof(*(utsname()))); |
978 | 984 | } |
979 | 985 |