Subject: Re: BUG or not? GFP_KERNEL with interrupts disabled.

From: "David S. Miller" <[email-masked]>
Date: Thu, 27 Mar 2003 05:43:57 -0800 (PST)

From: [email-masked]
   Date: Thu, 27 Mar 2003 15:32:02 +0200 (IST)

   Further more, holding a lock_irq doesn't mean bottom halves are disabled
   too, it just means interrupts are disabled and no *new* softirq can be
   queued. Consider the following situation:
   
I think local_bh_enable() should check irqs_disabled() and honour that.
What you are showing here, that BH's can run via local_bh_enable()
even when IRQs are disabled, is a BUG().

IRQ disabling is meant to be stronger than softint disabling.

Ingo/Linus?