]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Drivers: hv: Compare cpumasks and not their weights in init_vp_index()
authorVitaly Kuznetsov <vkuznets@redhat.com>
Fri, 28 Jan 2022 10:34:12 +0000 (11:34 +0100)
committerWei Liu <wei.liu@kernel.org>
Thu, 3 Feb 2022 12:47:31 +0000 (12:47 +0000)
The condition is supposed to check whether 'allocated_mask' got fully
exhausted, i.e. there's no free CPU on the NUMA node left so we have
to use one of the already used CPUs. As only bits which correspond
to CPUs from 'cpumask_of_node(numa_node)' get set in 'allocated_mask',
checking for the equal weights is technically correct but not obvious.
Let's compare cpumasks directly.

No functional change intended.

Suggested-by: Michael Kelley <mikelley@microsoft.com>
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Reviewed-by: Michael Kelley <mikelley@microsoft.com>
Link: https://lore.kernel.org/r/20220128103412.3033736-3-vkuznets@redhat.com
Signed-off-by: Wei Liu <wei.liu@kernel.org>
drivers/hv/channel_mgmt.c

index 52cf6ae525e96624e96a07961ba048188c98c479..26d269ba947c85c5a87fe4d9ba1743ca6ccaa348 100644 (file)
@@ -762,8 +762,7 @@ static void init_vp_index(struct vmbus_channel *channel)
                }
                allocated_mask = &hv_context.hv_numa_map[numa_node];
 
-               if (cpumask_weight(allocated_mask) ==
-                   cpumask_weight(cpumask_of_node(numa_node))) {
+               if (cpumask_equal(allocated_mask, cpumask_of_node(numa_node))) {
                        /*
                         * We have cycled through all the CPUs in the node;
                         * reset the allocated map.