random: use for_each_online_node() to iterate over NUMA nodes

This fixes a crash on s390 with fake NUMA enabled.

Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Fixes: 1e7f583af6 ("random: make /dev/urandom scalable for silly userspace programs")
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
Theodore Ts'o 2016-07-27 23:30:25 -04:00
parent 86a574de45
commit 59b8d4f1f5
1 changed files with 1 additions and 2 deletions

View File

@ -1668,13 +1668,12 @@ static int rand_initialize(void)
#ifdef CONFIG_NUMA #ifdef CONFIG_NUMA
pool = kmalloc(num_nodes * sizeof(void *), pool = kmalloc(num_nodes * sizeof(void *),
GFP_KERNEL|__GFP_NOFAIL|__GFP_ZERO); GFP_KERNEL|__GFP_NOFAIL|__GFP_ZERO);
for (i=0; i < num_nodes; i++) { for_each_online_node(i) {
crng = kmalloc_node(sizeof(struct crng_state), crng = kmalloc_node(sizeof(struct crng_state),
GFP_KERNEL | __GFP_NOFAIL, i); GFP_KERNEL | __GFP_NOFAIL, i);
spin_lock_init(&crng->lock); spin_lock_init(&crng->lock);
crng_initialize(crng); crng_initialize(crng);
pool[i] = crng; pool[i] = crng;
} }
mb(); mb();
crng_node_pool = pool; crng_node_pool = pool;