Messages in this thread | | | Date | Wed, 1 Aug 2007 22:13:42 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH] Fix two potential mem leaks in MPT Fusion (mpt_attach()) |
| |
On Wed, 1 Aug 2007 21:03:50 -0600 Matthew Wilcox <matthew@wil.cx> wrote:
> On Wed, Aug 01, 2007 at 05:26:53PM -0700, Andrew Morton wrote: > > Why on earth is that using GFP_ATOMIC? This function later goes on to > > create procfs files and such things. > > Seems fairly common in driver initialisation code. I removed three > instances of this in the advansys driver.
hrm. People reach for GFP_ATOMIC so often that it becomes a habit, I guess.
It makes one wonder how much that lovely fault-injection framework is being used.
> > y'know, we could have a debug option which will spit warnings if someone > > does a !__GFP_WAIT allocation while !in_atomic() (only works if > > CONFIG_PREEMPT). > > > > But please, make it depend on !CONFIG_AKPM. I shudder to think about all > > the stuff it would pick up. > > Seems like you'd get a lot of false positives.
There would be a few. mempool does a non-__GFP_WAIT allocation deliberately, for example (I still think that's fishy btw).
But I don't expect there would be a large number of falsies. We could add a __GFP_I_REALLY_MEANT_ATOMIC flag to shut those up.
> How about a call: > > slab_warn_about_atomic_allocs(); > > right before calling the initcalls, and then > > slab_stop_warning_about_atomic_allocs(); > > after calling them? That should give people a lot to chew on for a few > months. Obviously, you would need to not warn about allocations from > interrupt context, as you say above.
Could. But GFP_ATOMIC at initcall-time really isn't a problem (except that it can probably also happen at modprobe-time).
What is the major concern is needlessly atomic allocations at regular runtime.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |