aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2016-07-27 23:30:25 -0400
committerTheodore Ts'o <tytso@mit.edu>2016-07-27 23:30:25 -0400
commit59b8d4f1f5d26e4ca92172ff6dcd1492cdb39613 (patch)
tree946cb48bfa761f7d30ff0f99f5fcb9e158d9362f
parent86a574de4590ffe6fd3f3ca34cdcf655a78e36ec (diff)
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: 1e7f583af67b ("random: make /dev/urandom scalable for silly userspace programs") Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r--drivers/char/random.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/char/random.c b/drivers/char/random.c
index 8d0af74f6569..7f0622426b97 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1668,13 +1668,12 @@ static int rand_initialize(void)
1668#ifdef CONFIG_NUMA 1668#ifdef CONFIG_NUMA
1669 pool = kmalloc(num_nodes * sizeof(void *), 1669 pool = kmalloc(num_nodes * sizeof(void *),
1670 GFP_KERNEL|__GFP_NOFAIL|__GFP_ZERO); 1670 GFP_KERNEL|__GFP_NOFAIL|__GFP_ZERO);
1671 for (i=0; i < num_nodes; i++) { 1671 for_each_online_node(i) {
1672 crng = kmalloc_node(sizeof(struct crng_state), 1672 crng = kmalloc_node(sizeof(struct crng_state),
1673 GFP_KERNEL | __GFP_NOFAIL, i); 1673 GFP_KERNEL | __GFP_NOFAIL, i);
1674 spin_lock_init(&crng->lock); 1674 spin_lock_init(&crng->lock);
1675 crng_initialize(crng); 1675 crng_initialize(crng);
1676 pool[i] = crng; 1676 pool[i] = crng;
1677
1678 } 1677 }
1679 mb(); 1678 mb();
1680 crng_node_pool = pool; 1679 crng_node_pool = pool;