kernel/softirq.c | 17 ++++++++++++++--- 1 files changed, 14 insertions(+), 3 deletions(-) diff -puN kernel/softirq.c~local_bh_enable-warning-fix kernel/softirq.c --- 25/kernel/softirq.c~local_bh_enable-warning-fix 2003-10-30 14:56:16.000000000 -0800 +++ 25-akpm/kernel/softirq.c 2003-10-30 19:03:11.000000000 -0800 @@ -117,11 +117,22 @@ EXPORT_SYMBOL(do_softirq); void local_bh_enable(void) { + if (in_irq()) { + printk("local_bh_enable() was called in hard irq context. " + "This is probably a bug\n"); + dump_stack(); + } + __local_bh_enable(); - WARN_ON(irqs_disabled()); - if (unlikely(!in_interrupt() && - local_softirq_pending())) + if (unlikely(!in_interrupt() && local_softirq_pending())) { + if (irqs_disabled()) { + printk("local_bh_enable() was called with local " + "interrupts disabled. This is probably a" + " bug\n"); + dump_stack(); + } invoke_softirq(); + } preempt_check_resched(); } EXPORT_SYMBOL(local_bh_enable); _