On Wed, 25 Feb 2015, Michal Hocko wrote: > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 2d224bbdf8e8..c2ff40a30003 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2363,7 +2363,8 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, > goto out; > } > /* Exhausted what can be done so it's blamo time */ > - if (out_of_memory(ac->zonelist, gfp_mask, order, ac->nodemask, false)) > + if (out_of_memory(ac->zonelist, gfp_mask, order, ac->nodemask, false) > + || WARN_ON_ONCE(gfp_mask & __GFP_NOFAIL)) > *did_some_progress = 1; > out: > oom_zonelist_unlock(ac->zonelist, gfp_mask); Eek, not sure we actually need to play any games with did_some_progress, it might be clearer just to do this diff --git a/mm/page_alloc.c b/mm/page_alloc.c --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2760,7 +2760,7 @@ retry: &did_some_progress); if (page) goto got_pg; - if (!did_some_progress) + if (!did_some_progress && !(gfp_mask & __GFP_NOFAIL)) goto nopage; } /* Wait for some write requests to complete then retry */ Either way you decide, feel free to add my Acked-by: David Rientjes <rientjes@xxxxxxxxxxx> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>