handle_nested_irq() is supposed to be running inside the parent thread handler context. It per se has no dedicated kernel thread, thus shouldn't touch desc->threads_active. The parent kernel thread has already taken care of this. Fixes: e2c12739ccf7 ("genirq: Prevent nested thread vs synchronize_hardirq() deadlock") Cc: stable@xxxxxxxxxxxxxxx Signed-off-by: Peng Liu <iwtbavbm@xxxxxxxxx> --- Despite of its correctness, I'm afraid the testing on my only PC can't cover the affected code path. So the patch may be totally -UNTESTED-. kernel/irq/chip.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index dc94e0bf2c94..85d4f29134e9 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -478,7 +478,6 @@ void handle_nested_irq(unsigned int irq) } kstat_incr_irqs_this_cpu(desc); - atomic_inc(&desc->threads_active); raw_spin_unlock_irq(&desc->lock); action_ret = IRQ_NONE; @@ -487,8 +486,6 @@ void handle_nested_irq(unsigned int irq) if (!irq_settings_no_debug(desc)) note_interrupt(desc, action_ret); - - wake_threads_waitq(desc); } EXPORT_SYMBOL_GPL(handle_nested_irq); -- 2.39.2