irqchip/irq-bcm6345-l1: Avoid explicit cpumask allocation on stack
authorDawei Li <dawei.li@shingroup.cn>
Tue, 16 Apr 2024 08:54:49 +0000 (16:54 +0800)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 24 Apr 2024 19:23:49 +0000 (21:23 +0200)
In general it's preferable to avoid placing cpumasks on the stack, as
for large values of NR_CPUS these can consume significant amounts of
stack space and make stack overflows more likely.

Use cpumask_first_and_and() to avoid the need for a temporary cpumask on
the stack.

Signed-off-by: Dawei Li <dawei.li@shingroup.cn>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20240416085454.3547175-3-dawei.li@shingroup.cn
drivers/irqchip/irq-bcm6345-l1.c

index eb02d203c9634fb649a27ce03c6a9c00785b60e0..90daa274ef23950b87ca0d47d51c3283bbcfc6fb 100644 (file)
@@ -192,14 +192,10 @@ static int bcm6345_l1_set_affinity(struct irq_data *d,
        u32 mask = BIT(d->hwirq % IRQS_PER_WORD);
        unsigned int old_cpu = cpu_for_irq(intc, d);
        unsigned int new_cpu;
-       struct cpumask valid;
        unsigned long flags;
        bool enabled;
 
-       if (!cpumask_and(&valid, &intc->cpumask, dest))
-               return -EINVAL;
-
-       new_cpu = cpumask_any_and(&valid, cpu_online_mask);
+       new_cpu = cpumask_first_and_and(&intc->cpumask, dest, cpu_online_mask);
        if (new_cpu >= nr_cpu_ids)
                return -EINVAL;