Skip to content

Commit 65dd1f7

Browse files
committed
genirq/manage: Rework prepare_percpu_nmi()
Use the new guards to get and lock the interrupt descriptor and tidy up the code. No functional change. Signed-off-by: Thomas Gleixner <[email protected]> Acked-by: Peter Zijlstra (Intel) <[email protected]> Link: https://lore.kernel.org/all/[email protected]
1 parent 8e3f672 commit 65dd1f7

File tree

1 file changed

+8
-21
lines changed

1 file changed

+8
-21
lines changed

kernel/irq/manage.c

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2606,32 +2606,19 @@ int request_percpu_nmi(unsigned int irq, irq_handler_t handler,
26062606
*/
26072607
int prepare_percpu_nmi(unsigned int irq)
26082608
{
2609-
unsigned long flags;
2610-
struct irq_desc *desc;
2611-
int ret = 0;
2609+
int ret = -EINVAL;
26122610

26132611
WARN_ON(preemptible());
26142612

2615-
desc = irq_get_desc_lock(irq, &flags,
2616-
IRQ_GET_DESC_CHECK_PERCPU);
2617-
if (!desc)
2618-
return -EINVAL;
2619-
2620-
if (WARN(!irq_is_nmi(desc),
2621-
KERN_ERR "prepare_percpu_nmi called for a non-NMI interrupt: irq %u\n",
2622-
irq)) {
2623-
ret = -EINVAL;
2624-
goto out;
2625-
}
2613+
scoped_irqdesc_get_and_lock(irq, IRQ_GET_DESC_CHECK_PERCPU) {
2614+
if (WARN(!irq_is_nmi(scoped_irqdesc),
2615+
"prepare_percpu_nmi called for a non-NMI interrupt: irq %u\n", irq))
2616+
return -EINVAL;
26262617

2627-
ret = irq_nmi_setup(desc);
2628-
if (ret) {
2629-
pr_err("Failed to setup NMI delivery: irq %u\n", irq);
2630-
goto out;
2618+
ret = irq_nmi_setup(scoped_irqdesc);
2619+
if (ret)
2620+
pr_err("Failed to setup NMI delivery: irq %u\n", irq);
26312621
}
2632-
2633-
out:
2634-
irq_put_desc_unlock(desc, flags);
26352622
return ret;
26362623
}
26372624

0 commit comments

Comments
 (0)