softirq: Add debug check to __raise_softirq_irqoff()
authorJiafei Pan <Jiafei.Pan@nxp.com>
Fri, 14 Aug 2020 04:55:22 +0000 (12:55 +0800)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 16 Sep 2020 13:18:56 +0000 (15:18 +0200)
__raise_softirq_irqoff() must be called with interrupts disabled to protect
the per CPU softirq pending state update against an interrupt and soft
interrupt handling on return from interrupt.

Add a lockdep assertion to validate the calling convention.

[ tglx: Massaged changelog ]

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20200814045522.45719-1-Jiafei.Pan@nxp.com
kernel/softirq.c

index bf88d7f..09229ad 100644 (file)
@@ -481,6 +481,7 @@ void raise_softirq(unsigned int nr)
 
 void __raise_softirq_irqoff(unsigned int nr)
 {
+       lockdep_assert_irqs_disabled();
        trace_softirq_raise(nr);
        or_softirq_pending(1UL << nr);
 }