random: use for_each_online_node() to iterate over NUMA nodes
authorTheodore Ts'o <tytso@mit.edu>
Thu, 28 Jul 2016 03:30:25 +0000 (23:30 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 28 Jul 2016 03:30:25 +0000 (23:30 -0400)
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>
drivers/char/random.c

index 8d0af74f656987f2d1be560e336962e2d7badf20..7f0622426b972fcaf4fb82b818f1079f7216e853 100644 (file)
@@ -1668,13 +1668,12 @@ static int rand_initialize(void)
 #ifdef CONFIG_NUMA
        pool = kmalloc(num_nodes * sizeof(void *),
                       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),
                                    GFP_KERNEL | __GFP_NOFAIL, i);
                spin_lock_init(&crng->lock);
                crng_initialize(crng);
                pool[i] = crng;
-
        }
        mb();
        crng_node_pool = pool;