Re: [PATCH] MIPS: SB1250: Validate and update IRQ affinity

From: Maciej W. Rozycki

Date: Fri Nov 06 2026 - 01:01:16 EST


On Tue, 3 Nov 2026, Florian Fainelli wrote:

> sb1250_set_affinity() selects the first online CPU in the requested
> affinity mask without checking whether such a CPU exists. If the
> intersection is empty, the resulting CPU index is invalid and must
> not be passed to cpu_logical_map().
>
> Reject affinity masks containing no online CPU with -EINVAL before
> accessing the CPU mapping or interrupt mapper registers.

Why do you think this is needed? The only case where an unvalidated mask
is passed is AFAICT with:

/**
* irq_force_affinity - Force the irq affinity of a given irq
* @irq: Interrupt to set affinity
* @cpumask: cpumask
*
* Same as irq_set_affinity, but without checking the mask against
* online cpus.
*
* Solely for low level cpu hotplug code, where we need to make per
* cpu interrupts affine before the cpu becomes online.
*/

-- which does not apply here (nor for arch/mips/sibyte/bcm1480/irq.c,
which uses analogous code and should otherwise be updated accordingly)
since all the CPUs are onchip the SoC.

Have I missed anything?

> Also update the effective affinity mask to reflect the single logical
> CPU selected as the interrupt target.

Likewise, why is it needed? This code returns IRQ_SET_MASK_OK (should
really use the enumeration constant), so the caller will do the copy.

Maciej