BITS_PER_LONG is too broad, the max number of usable bits is limited
by nr_cpumask_bits.
Found while debugging a system with CONFIG_DEBUG_PER_CPU_MAPS enabled.

Signed-off-by: Richard Weinberger <rich...@nod.at>
---
 kernel/cobalt/sched.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/cobalt/sched.c b/kernel/cobalt/sched.c
index 88c4951ed814..aa65fd7f5d63 100644
--- a/kernel/cobalt/sched.c
+++ b/kernel/cobalt/sched.c
@@ -1370,7 +1370,7 @@ static int affinity_vfile_show(struct 
xnvfile_regular_iterator *it,
        unsigned long val = 0;
        int cpu;
 
-       for (cpu = 0; cpu < BITS_PER_LONG; cpu++)
+       for (cpu = 0; cpu < nr_cpumask_bits; cpu++)
                if (cpumask_test_cpu(cpu, &cobalt_cpu_affinity))
                        val |= (1UL << cpu);
 
@@ -1395,7 +1395,7 @@ static ssize_t affinity_vfile_store(struct xnvfile_input 
*input)
                affinity = xnsched_realtime_cpus; /* Reset to default. */
        else {
                cpumask_clear(&affinity);
-               for (cpu = 0; cpu < BITS_PER_LONG; cpu++, val >>= 1) {
+               for (cpu = 0; cpu < nr_cpumask_bits; cpu++, val >>= 1) {
                        if (val & 1) {
                                /*
                                 * The new dynamic affinity must be a strict
-- 
2.26.2


Reply via email to