From 0d267566650d89bde8bd5ec4665749810d5bafc7 Mon Sep 17 00:00:00 2001 From: tuxoko Date: Fri, 7 Oct 2016 20:59:46 -0700 Subject: [PATCH] Fix out-of-bound in per_cpu in spl_random_init When iterating per_cpu values, we need to use for_each_possible_cpu. While NR_CPUS indicates the number of CPU supported by the kernel, it might not initialize all of them if the kernel decides it's not possible to use them. Reviewed-by: Brian Behlendorf Signed-off-by: Chunwei Chen Closes #578 --- module/spl/spl-generic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/spl/spl-generic.c b/module/spl/spl-generic.c index c04cb538c4..ce60963bd5 100644 --- a/module/spl/spl-generic.c +++ b/module/spl/spl-generic.c @@ -638,7 +638,7 @@ spl_random_init(void) "0x%016llx%016llx.", cpu_to_be64(s[0]), cpu_to_be64(s[1])); } - for (i = 0; i < NR_CPUS; i++) { + for_each_possible_cpu(i) { uint64_t *wordp = per_cpu(spl_pseudo_entropy, i); spl_rand_jump(s);