From: Thomas Gleixner Date: Tue, 29 Apr 2025 06:55:49 +0000 (+0200) Subject: genirq/manage: Rework prepare_percpu_nmi() X-Git-Tag: v6.16-rc1~189^2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=65dd1f7ca94fde615684827af285a0475d177b9a;p=thirdparty%2Fkernel%2Flinux.git 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 Acked-by: Peter Zijlstra (Intel) Link: https://lore.kernel.org/all/20250429065422.494561120@linutronix.de --- diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index a57e95254fdbb..c6472b1e4c26a 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -2606,32 +2606,19 @@ err_out: */ int prepare_percpu_nmi(unsigned int irq) { - unsigned long flags; - struct irq_desc *desc; - int ret = 0; + int ret = -EINVAL; WARN_ON(preemptible()); - desc = irq_get_desc_lock(irq, &flags, - IRQ_GET_DESC_CHECK_PERCPU); - if (!desc) - return -EINVAL; - - if (WARN(!irq_is_nmi(desc), - KERN_ERR "prepare_percpu_nmi called for a non-NMI interrupt: irq %u\n", - irq)) { - ret = -EINVAL; - goto out; - } + scoped_irqdesc_get_and_lock(irq, IRQ_GET_DESC_CHECK_PERCPU) { + if (WARN(!irq_is_nmi(scoped_irqdesc), + "prepare_percpu_nmi called for a non-NMI interrupt: irq %u\n", irq)) + return -EINVAL; - ret = irq_nmi_setup(desc); - if (ret) { - pr_err("Failed to setup NMI delivery: irq %u\n", irq); - goto out; + ret = irq_nmi_setup(scoped_irqdesc); + if (ret) + pr_err("Failed to setup NMI delivery: irq %u\n", irq); } - -out: - irq_put_desc_unlock(desc, flags); return ret; }