Subject: Re: PROBLEM: in_atomic() misuse all over the place

From: Andrew Morton <[email-masked]>
Date: Sat, 31 Jan 2009 00:58:15 -0800

On Sat, 31 Jan 2009 00:48:43 -0800 (PST) David Miller <[email-masked]> wrote:

> From: Andrew Morton <[email-masked]>
> Date: Fri, 30 Jan 2009 21:49:33 -0800
> 
> > Hang on.  You said
> > 
> >   That's typically for softirq vs non softirq, which is important for
> >   the network stack.
> > 
> > that's what in_softirq() does.
> > 
> > Now, if networking is indeed using in_atomic() to detect
> > are-we-inside-a-spinlock then networking is buggy.
> > 
> > If networking is _not_ doing that then we can safely switch it to
> > in_sortirq() or in_interrupt().  And this would reenable the bug
> > detection which networking's use of in_atomic() accidentally
> > suppressed.
> 
> I think this is a reasonable conclusion, looking at the
> gfp_any() users.
> 
> Feel free to change it to use in_softirq() and see what
> explodes in -mm.  Report to me your findings :-)

I don't get much network coverage in my testing...

I went for in_interrupt(), which is in_softirq()||in_hardirq().  I
guess that was a bit of a cop-out if the design decision is that this
is purely for are-we-in-softirq decision making.

I'll set it to in_softirq() and shall see what happens..