---

 25-akpm/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	2004-05-09 16:03:55.000000000 -0700
+++ 25-akpm/kernel/softirq.c	2004-05-09 16:03:55.000000000 -0700
@@ -132,11 +132,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);

_
