All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mm/page_alloc: Don't fail costly __GFP_NOFAIL allocations.
@ 2016-11-17 12:50 ` Tetsuo Handa
  0 siblings, 0 replies; 7+ messages in thread
From: Tetsuo Handa @ 2016-11-17 12:50 UTC (permalink / raw)
  To: akpm; +Cc: linux-mm, Tetsuo Handa, Michal Hocko, stable

Filesystem code might request costly __GFP_NOFAIL !__GFP_REPEAT GFP_NOFS
allocations. But commit 0a0337e0d1d13446 ("mm, oom: rework oom detection")
overlooked that __GFP_NOFAIL allocation requests need to invoke the OOM
killer and retry even if order > PAGE_ALLOC_COSTLY_ORDER && !__GFP_REPEAT.
The caller will crash if such allocation request failed.

Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: Michal Hocko <mhocko@suse.com>
Cc: <stable@vger.kernel.org> # 4.7+
---
 mm/page_alloc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 6de9440..b458f00 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -3650,9 +3650,10 @@ bool gfp_pfmemalloc_allowed(gfp_t gfp_mask)
 
 	/*
 	 * Do not retry costly high order allocations unless they are
-	 * __GFP_REPEAT
+	 * __GFP_REPEAT or __GFP_NOFAIL
 	 */
-	if (order > PAGE_ALLOC_COSTLY_ORDER && !(gfp_mask & __GFP_REPEAT))
+	if (order > PAGE_ALLOC_COSTLY_ORDER &&
+	    !(gfp_mask & (__GFP_REPEAT | __GFP_NOFAIL)))
 		goto nopage;
 
 	/* Make sure we know about allocations which stall for too long */
-- 
1.8.3.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-11-22  6:44 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-17 12:50 [PATCH] mm/page_alloc: Don't fail costly __GFP_NOFAIL allocations Tetsuo Handa
2016-11-17 12:50 ` Tetsuo Handa
2016-11-21  6:03 ` Michal Hocko
2016-11-21 11:16   ` Tetsuo Handa
2016-11-21 12:54     ` Michal Hocko
2016-11-22  6:29       ` Michal Hocko
2016-11-22  6:44         ` Michal Hocko

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.