Skip to content

Commit

Permalink
[NET]: srandom32 fixes for networking v2
Browse files Browse the repository at this point in the history
- Let it update the state of all CPUs. The network stack goes
into pains to feed the current IP addresses in, but it is not very
effective if that is only done for some random CPU instead of all.
So change it to feed bits into all CPUs.  I decided to do that lockless 
because well somewhat random results are ok.

v2: Drop rename so that this patch doesn't depend on x86 maintainers

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Andi Kleen authored and David S. Miller committed Apr 3, 2008
1 parent 84f5937 commit 61407f8
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions lib/random32.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down

0 comments on commit 61407f8

Please sign in to comment.