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:
parent
86a574de45
commit
59b8d4f1f5
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue