Messages in this thread | ![/](/images/icornerl.gif) | | Date | Fri, 30 Jan 2009 16:03:16 -0800 | From | Andrew Morton <> | Subject | Re: PROBLEM: in_atomic() misuse all over the place |
| |
On Wed, 28 Jan 2009 13:18:50 +0100 Andi Kleen <andi@firstfloor.org> wrote:
> > file: include/net/sock.h > > > > static inline gfp_t gfp_any(void) > > { > > return in_atomic() ? GFP_ATOMIC : GFP_KERNEL; > > } > > That's typically for softirq vs non softirq, which is important > for the network stack. >
There's a bit of a problem here. If someone accidentally uses gfp_any() inside a spinlock, it will do a sleeping allocation on non-preempt kernels and will do an atomic allocation on preemptible kernels, so we won't get to see the warning which would allow us to fix the bug.
Would using irq_count() work? If so, that would fix this up.
| ![\](/images/icornerr.gif) |