Hi Richard,

On Mon, 2022-03-14 at 21:38 +0100, Richard Weinberger via Xenomai
wrote:
> BITS_PER_LONG is too broad, the max number of usable bits is limited
> by nr_cpumask_bits.

I agree, BITS_PER_LONG seems wrong. But couldn't it be too small as
well? It depends on NR_CPUS which might be > BITS_PER_LONG.

Regards,
Florian

> 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

Reply via email to