Messages in this thread | | | From | Anup Patel <> | Date | Wed, 17 Apr 2024 16:51:00 +0530 | Subject | Re: [PATCH v2 6/7] irqchip/sifive-plic: Avoid explicit cpumask allocation on stack |
| |
On Tue, Apr 16, 2024 at 2:26 PM Dawei Li <dawei.li@shingroup.cn> wrote: > > 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>
LGTM.
Reviewed-by: Anup Patel <anup@brainfault.org>
Regards, Anup
> --- > drivers/irqchip/irq-sifive-plic.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/drivers/irqchip/irq-sifive-plic.c b/drivers/irqchip/irq-sifive-plic.c > index f3d4cb9e34f7..8fb183ced1e7 100644 > --- a/drivers/irqchip/irq-sifive-plic.c > +++ b/drivers/irqchip/irq-sifive-plic.c > @@ -164,15 +164,12 @@ static int plic_set_affinity(struct irq_data *d, > const struct cpumask *mask_val, bool force) > { > unsigned int cpu; > - struct cpumask amask; > struct plic_priv *priv = irq_data_get_irq_chip_data(d); > > - cpumask_and(&amask, &priv->lmask, mask_val); > - > if (force) > - cpu = cpumask_first(&amask); > + cpu = cpumask_first_and(&priv->lmask, mask_val); > else > - cpu = cpumask_any_and(&amask, cpu_online_mask); > + cpu = cpumask_first_and_and(&priv->lmask, mask_val, cpu_online_mask); > > if (cpu >= nr_cpu_ids) > return -EINVAL; > -- > 2.27.0 >
| |