diff options
| author | Benoît Monin <benoit.monin@bootlin.com> | 2026-09-29 14:14:09 +0200 |
|---|---|---|
| committer | Thomas Gleixner <tglx@kernel.org> | 2026-10-15 12:02:16 +0200 |
| commit | 1bae25dcc6beb8b874f23601d2efa142ac4f9f36 (patch) | |
| tree | 8dd7d9d77686eef30ff5a0676fcb8347c86e3d0b /scripts/Makefile.thinlto | |
| parent | 03c4d26933d54556a89379db5923ae9e474569e8 (diff) | |
| download | linux-1bae25dcc6beb8b874f23601d2efa142ac4f9f36.tar.gz linux-1bae25dcc6beb8b874f23601d2efa142ac4f9f36.zip | |
irqchip/mips-gic: Fix recursive acquisition of gic_lock in gic_set_affinity()
Commit 322a90638768 ("irqchip/mips-gic: Multi-cluster support")
made gic_set_affinity() call gic_set_type() when an interrupt's
affinity is moved between clusters. gic_set_type() takes gic_lock with
raw_spin_lock_irqsave(), but gic_set_affinity() holds gic_lock at that
point, so the same raw spinlock is acquired twice, triggering a deadlock.
Split gic_set_type() into a gic_set_type_locked() helper that assumes
gic_lock is already held. gic_set_type() takes gic_lock and calls the
helper, and gic_set_affinity() calls gic_set_type_locked() directly,
since it already holds gic_lock.
Fixes: 322a90638768 ("irqchip/mips-gic: Multi-cluster support")
Signed-off-by: Benoît Monin <benoit.monin@bootlin.com>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Reviewed-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Link: https://patch.msgid.link/20260929-sync-gic-counters-v4-2-ec70c4b60434@bootlin.com
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
