[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20090212.164330.59402005.davem@davemloft.net>
Date: Thu, 12 Feb 2009 16:43:30 -0800 (PST)
From: David Miller <davem@...emloft.net>
To: akpm@...ux-foundation.org
Cc: netdev@...r.kernel.org, andi@...stfloor.org
Subject: Re: [patch 1/2] net: don't use in_atomic() in gfp_any()
From: akpm@...ux-foundation.org
Date: Wed, 11 Feb 2009 13:27:19 -0800
> The problem is that in_atomic() will return false inside spinlocks if
> CONFIG_PREEMPT=n. This will lead to deadlockable GFP_KERNEL allocations
> from spinlocked regions.
>
> Secondly, if CONFIG_PREEMPT=y, this bug solves itself because networking
> will instead use GFP_ATOMIC from this callsite. Hence we won't get the
> might_sleep() debugging warnings which would have informed us of the buggy
> callsites.
>
> Solve both these problems by switching to in_interrupt(). Now, if someone
> runs a gfp_any() allocation from inside spinlock we will get the warning
> if CONFIG_PREEMPT=y.
>
> I reviewed all callsites and most of them were too complex for my little
> brain and none of them documented their interface requirements. I have no
> idea what this patch will do.
>
> Signed-off-by: Andrew Morton <akpm@...ux-foundation.org>
Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists