crypto: iaa - Use cpumask_weight() when rebalancing
authorTom Zanussi <tom.zanussi@linux.intel.com>
Fri, 5 Apr 2024 18:57:30 +0000 (13:57 -0500)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 12 Apr 2024 07:07:52 +0000 (15:07 +0800)
If some cpus are offlined, or if the node mask is smaller than
expected, the 'nonexistent cpu' warning in rebalance_wq_table() may be
erroneously triggered.

Use cpumask_weight() to make sure we only iterate over the exact
number of cpus in the mask.

Also use num_possible_cpus() instead of num_online_cpus() to make sure
all slots in the wq table are initialized.

Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/intel/iaa/iaa_crypto_main.c

index 6229b24b0d3565999aab6d7aa444b1143f7ab794..814fb2c31626b45325f1515b7a7ad7f8c56a64e6 100644 (file)
@@ -922,7 +922,7 @@ static void rebalance_wq_table(void)
        for_each_node_with_cpus(node) {
                node_cpus = cpumask_of_node(node);
 
-               for (cpu = 0; cpu < nr_cpus_per_node; cpu++) {
+               for (cpu = 0; cpu <  cpumask_weight(node_cpus); cpu++) {
                        int node_cpu = cpumask_nth(cpu, node_cpus);
 
                        if (WARN_ON(node_cpu >= nr_cpu_ids)) {
@@ -2005,7 +2005,7 @@ static int __init iaa_crypto_init_module(void)
        int ret = 0;
        int node;
 
-       nr_cpus = num_online_cpus();
+       nr_cpus = num_possible_cpus();
        for_each_node_with_cpus(node)
                nr_nodes++;
        if (!nr_nodes) {