netdev
[Top] [All Lists]

Re: BUG or not? GFP_KERNEL with interrupts disabled.

To: "David S. Miller" <davem@xxxxxxxxxx>
Subject: Re: BUG or not? GFP_KERNEL with interrupts disabled.
From: Trond Myklebust <trond.myklebust@xxxxxxxxxx>
Date: 27 Mar 2003 15:11:56 +0100
Cc: shmulik.hen@xxxxxxxxx, dane@xxxxxxxxxx, bonding-devel@xxxxxxxxxxxxxxxxxxxxx, bonding-announce@xxxxxxxxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, linux-net@xxxxxxxxxxxxxxx, torvalds@xxxxxxxxxxxxx, mingo@xxxxxxxxxx, kuznet@xxxxxxxxxxxxx
In-reply-to: <20030327.054357.17283294.davem@xxxxxxxxxx>
References: <E791C176A6139242A988ABA8B3D9B38A01085638@xxxxxxxxxxxxxxxxxxxxxxx> <Pine.LNX.4.44.0303271406230.7106-100000@xxxxxxxxxxxxxxxxxxxxxxxx> <20030327.054357.17283294.davem@xxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Honest Recruiter)
>>>>> " " == David S Miller <davem@xxxxxxxxxx> writes:

     >    From: shmulik.hen@xxxxxxxxx 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.

In that case, you'll need to have things like spin_lock_irqrestore()
call local_bh_enable() in order to run the pending softirqs. Is that
worth the trouble?

Cheers,
  Trond

<Prev in Thread] Current Thread [Next in Thread>