softirqs, debug: preemption check

if a preempt count leaks out of a softirq handler it can be very hard
to figure it out. Add a debug check for this.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Thomas Gleixner 2008-10-02 10:50:53 +02:00 committed by Ingo Molnar
parent 978b0116cd
commit 8e85b4b553

View File

@ -205,7 +205,18 @@ asmlinkage void __do_softirq(void)
do {
if (pending & 1) {
int prev_count = preempt_count();
h->action(h);
if (unlikely(prev_count != preempt_count())) {
printk(KERN_ERR "huh, entered sotfirq %ld %p"
"with preempt_count %08x,"
" exited with %08x?\n", h - softirq_vec,
h->action, prev_count, preempt_count());
preempt_count() = prev_count;
}
rcu_bh_qsctr_inc(cpu);
}
h++;