[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <173693257835.31546.14290778827570769483.tip-bot2@tip-bot2>
Date: Wed, 15 Jan 2025 09:16:18 -0000
From: "tip-bot2 for Tomas Krcka" <tip-bot2@...utronix.de>
To: linux-tip-commits@...r.kernel.org
Cc: Tomas Krcka <krckatom@...zon.de>, Thomas Gleixner <tglx@...utronix.de>,
Marc Zyngier <maz@...nel.org>, stable@...r.kernel.org, x86@...nel.org,
linux-kernel@...r.kernel.org
Subject: [tip: irq/urgent] irqchip/gic-v3-its: Don't enable interrupts in
its_irq_set_vcpu_affinity()
The following commit has been merged into the irq/urgent branch of tip:
Commit-ID: 35cb2c6ce7da545f3b5cb1e6473ad7c3a6f08310
Gitweb: https://git.kernel.org/tip/35cb2c6ce7da545f3b5cb1e6473ad7c3a6f08310
Author: Tomas Krcka <krckatom@...zon.de>
AuthorDate: Mon, 30 Dec 2024 15:08:25
Committer: Thomas Gleixner <tglx@...utronix.de>
CommitterDate: Wed, 15 Jan 2025 09:42:45 +01:00
irqchip/gic-v3-its: Don't enable interrupts in its_irq_set_vcpu_affinity()
The following call-chain leads to enabling interrupts in a nested interrupt
disabled section:
irq_set_vcpu_affinity()
irq_get_desc_lock()
raw_spin_lock_irqsave() <--- Disable interrupts
its_irq_set_vcpu_affinity()
guard(raw_spinlock_irq) <--- Enables interrupts when leaving the guard()
irq_put_desc_unlock() <--- Warns because interrupts are enabled
This was broken in commit b97e8a2f7130, which replaced the original
raw_spin_[un]lock() pair with guard(raw_spinlock_irq).
Fix the issue by using guard(raw_spinlock).
[ tglx: Massaged change log ]
Fixes: b97e8a2f7130 ("irqchip/gic-v3-its: Fix potential race condition in its_vlpi_prop_update()")
Signed-off-by: Tomas Krcka <krckatom@...zon.de>
Signed-off-by: Thomas Gleixner <tglx@...utronix.de>
Reviewed-by: Marc Zyngier <maz@...nel.org>
Cc: stable@...r.kernel.org
Link: https://lore.kernel.org/all/20241230150825.62894-1-krckatom@amazon.de
---
drivers/irqchip/irq-gic-v3-its.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
index 92244cf..8c3ec57 100644
--- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -2045,7 +2045,7 @@ static int its_irq_set_vcpu_affinity(struct irq_data *d, void *vcpu_info)
if (!is_v4(its_dev->its))
return -EINVAL;
- guard(raw_spinlock_irq)(&its_dev->event_map.vlpi_lock);
+ guard(raw_spinlock)(&its_dev->event_map.vlpi_lock);
/* Unmap request? */
if (!info)
Powered by blists - more mailing lists