Re: linux-next: kernel BUG at mm/slub.c:1447!

From: Michal Hocko
Date: Fri Oct 02 2015 - 04:54:11 EST


On Fri 02-10-15 09:25:22, Michal Hocko wrote:
> On Thu 01-10-15 13:49:04, Andrew Morton wrote:
[...]
> > Now, we could redefine mapping_gfp_mask()'s purpose (or formalize
> > stuff which has been sneaking in anyway). Treat mapping_gfp_mask() as
> > a constraint mask - instead of it being "use this gfp for this
> > mapping", it becomes "don't use these gfp flags for this mapping".
> >
> > Hence something like:
> >
> > gfp_t mapping_gfp_constraint(struct address_space *mapping, gfp_t gfp_in)
> > {
> > return mapping_gfp_mask(mapping) & gfp_in;
> > }
> >
> > So instead of doing this:
> >
> > @@ -370,12 +371,13 @@ mpage_readpages(struct address_space *ma
> > prefetchw(&page->flags);
> > list_del(&page->lru);
> > if (!add_to_page_cache_lru(page, mapping,
> > - page->index, GFP_KERNEL)) {
> > + page->index,
> > + gfp)) {
> >
[...]
> I will post another one which
> will add mapping_gfp_constraint on top. It will surely be less error
> prone.

OK, so here we go. There are still few direct users of mapping_gfp_mask
but most of them use it unrestricted. The only exception seems to be
loop driver and luste lloop which save and restrict mapping_gfp which
didn't seem worthwhile converting.

This is on top of the current linux-next + the updated fix for the loop
hang.
---