Skip to content

Commit 193879e

Browse files
committed
genirq/manage: Rework irq_set_irqchip_state()
Use the new guards to get and lock the interrupt descriptor and tidy up the code. No functional change. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/all/20250429065422.670808288@linutronix.de
1 parent 782249a commit 193879e

File tree

1 file changed

+15
-28
lines changed

1 file changed

+15
-28
lines changed

kernel/irq/manage.c

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2703,39 +2703,26 @@ EXPORT_SYMBOL_GPL(irq_get_irqchip_state);
27032703
*/
27042704
int irq_set_irqchip_state(unsigned int irq, enum irqchip_irq_state which, bool val)
27052705
{
2706-
struct irq_desc *desc;
2707-
struct irq_data *data;
2708-
struct irq_chip *chip;
2709-
unsigned long flags;
2710-
int err = -EINVAL;
2706+
scoped_irqdesc_get_and_buslock(irq, 0) {
2707+
struct irq_data *data = irq_desc_get_irq_data(scoped_irqdesc);
2708+
struct irq_chip *chip;
27112709

2712-
desc = irq_get_desc_buslock(irq, &flags, 0);
2713-
if (!desc)
2714-
return err;
2710+
do {
2711+
chip = irq_data_get_irq_chip(data);
27152712

2716-
data = irq_desc_get_irq_data(desc);
2713+
if (WARN_ON_ONCE(!chip))
2714+
return -ENODEV;
27172715

2718-
do {
2719-
chip = irq_data_get_irq_chip(data);
2720-
if (WARN_ON_ONCE(!chip)) {
2721-
err = -ENODEV;
2722-
goto out_unlock;
2723-
}
2724-
if (chip->irq_set_irqchip_state)
2725-
break;
2726-
#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
2727-
data = data->parent_data;
2728-
#else
2729-
data = NULL;
2730-
#endif
2731-
} while (data);
2716+
if (chip->irq_set_irqchip_state)
2717+
break;
27322718

2733-
if (data)
2734-
err = chip->irq_set_irqchip_state(data, which, val);
2719+
data = irqd_get_parent_data(data);
2720+
} while (data);
27352721

2736-
out_unlock:
2737-
irq_put_desc_busunlock(desc, flags);
2738-
return err;
2722+
if (data)
2723+
return chip->irq_set_irqchip_state(data, which, val);
2724+
}
2725+
return -EINVAL;
27392726
}
27402727
EXPORT_SYMBOL_GPL(irq_set_irqchip_state);
27412728

0 commit comments

Comments
 (0)