summaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c49
1 files changed, 24 insertions, 25 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index dd36da6ffef5..1e37740837ac 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -3090,32 +3090,31 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order,
3090 if (page) 3090 if (page)
3091 goto out; 3091 goto out;
3092 3092
3093 if (!(gfp_mask & __GFP_NOFAIL)) { 3093 /* Coredumps can quickly deplete all memory reserves */
3094 /* Coredumps can quickly deplete all memory reserves */ 3094 if (current->flags & PF_DUMPCORE)
3095 if (current->flags & PF_DUMPCORE) 3095 goto out;
3096 goto out; 3096 /* The OOM killer will not help higher order allocs */
3097 /* The OOM killer will not help higher order allocs */ 3097 if (order > PAGE_ALLOC_COSTLY_ORDER)
3098 if (order > PAGE_ALLOC_COSTLY_ORDER) 3098 goto out;
3099 goto out; 3099 /* The OOM killer does not needlessly kill tasks for lowmem */
3100 /* The OOM killer does not needlessly kill tasks for lowmem */ 3100 if (ac->high_zoneidx < ZONE_NORMAL)
3101 if (ac->high_zoneidx < ZONE_NORMAL) 3101 goto out;
3102 goto out; 3102 if (pm_suspended_storage())
3103 if (pm_suspended_storage()) 3103 goto out;
3104 goto out; 3104 /*
3105 /* 3105 * XXX: GFP_NOFS allocations should rather fail than rely on
3106 * XXX: GFP_NOFS allocations should rather fail than rely on 3106 * other request to make a forward progress.
3107 * other request to make a forward progress. 3107 * We are in an unfortunate situation where out_of_memory cannot
3108 * We are in an unfortunate situation where out_of_memory cannot 3108 * do much for this context but let's try it to at least get
3109 * do much for this context but let's try it to at least get 3109 * access to memory reserved if the current task is killed (see
3110 * access to memory reserved if the current task is killed (see 3110 * out_of_memory). Once filesystems are ready to handle allocation
3111 * out_of_memory). Once filesystems are ready to handle allocation 3111 * failures more gracefully we should just bail out here.
3112 * failures more gracefully we should just bail out here. 3112 */
3113 */ 3113
3114 /* The OOM killer may not free memory on a specific node */
3115 if (gfp_mask & __GFP_THISNODE)
3116 goto out;
3114 3117
3115 /* The OOM killer may not free memory on a specific node */
3116 if (gfp_mask & __GFP_THISNODE)
3117 goto out;
3118 }
3119 /* Exhausted what can be done so it's blamo time */ 3118 /* Exhausted what can be done so it's blamo time */
3120 if (out_of_memory(&oc) || WARN_ON_ONCE(gfp_mask & __GFP_NOFAIL)) { 3119 if (out_of_memory(&oc) || WARN_ON_ONCE(gfp_mask & __GFP_NOFAIL)) {
3121 *did_some_progress = 1; 3120 *did_some_progress = 1;