diff options
Diffstat (limited to 'lib/random32.c')
| -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 ec7f81d3fb1..ca87d86992b 100644 --- a/lib/random32.c +++ b/lib/random32.c @@ -97,13 +97,18 @@ EXPORT_SYMBOL(random32);   *	@seed: seed value   *   *	Add some additional seeding to the random32() pool. - *	Note: this pool is per cpu so it only affects current CPU.   */  void srandom32(u32 entropy)  { -	struct rnd_state *state = &get_cpu_var(net_rand_state); -	__set_random32(state, state->s1 ^ entropy); -	put_cpu_var(state); +	int i; +	/* +	 * No locking on the CPUs, but then somewhat random results are, well, +	 * expected. +	 */ +	for_each_possible_cpu (i) { +		struct rnd_state *state = &per_cpu(net_rand_state, i); +		__set_random32(state, state->s1 ^ entropy); +	}  }  EXPORT_SYMBOL(srandom32);  |