[PATCH] mm/page_alloc: Don't fail costly __GFP_NOFAIL allocations.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxxxxx>
Cc: Michal Hocko <mhocko@xxxxxxxx>
Cc: <stable@xxxxxxxxxxxxxxx> # 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 from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]