diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/random32.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/random32.c b/lib/random32.c index ec7f81d3fb18..ca87d86992bd 100644 --- a/lib/random32.c +++ b/lib/random32.c | |||
@@ -97,13 +97,18 @@ EXPORT_SYMBOL(random32); | |||
97 | * @seed: seed value | 97 | * @seed: seed value |
98 | * | 98 | * |
99 | * Add some additional seeding to the random32() pool. | 99 | * Add some additional seeding to the random32() pool. |
100 | * Note: this pool is per cpu so it only affects current CPU. | ||
101 | */ | 100 | */ |
102 | void srandom32(u32 entropy) | 101 | void srandom32(u32 entropy) |
103 | { | 102 | { |
104 | struct rnd_state *state = &get_cpu_var(net_rand_state); | 103 | int i; |
105 | __set_random32(state, state->s1 ^ entropy); | 104 | /* |
106 | put_cpu_var(state); | 105 | * No locking on the CPUs, but then somewhat random results are, well, |
106 | * expected. | ||
107 | */ | ||
108 | for_each_possible_cpu (i) { | ||
109 | struct rnd_state *state = &per_cpu(net_rand_state, i); | ||
110 | __set_random32(state, state->s1 ^ entropy); | ||
111 | } | ||
107 | } | 112 | } |
108 | EXPORT_SYMBOL(srandom32); | 113 | EXPORT_SYMBOL(srandom32); |
109 | 114 | ||