diff options
| -rw-r--r-- | mm/page_alloc.c | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/mm/page_alloc.c b/mm/page_alloc.c index a47f0b229a1a..7abfa70cdc1a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2353,8 +2353,15 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order,  		if (ac->high_zoneidx < ZONE_NORMAL)  			goto out;  		/* The OOM killer does not compensate for light reclaim */ -		if (!(gfp_mask & __GFP_FS)) +		if (!(gfp_mask & __GFP_FS)) { +			/* +			 * XXX: Page reclaim didn't yield anything, +			 * and the OOM killer can't be invoked, but +			 * keep looping as per should_alloc_retry(). +			 */ +			*did_some_progress = 1;  			goto out; +		}  		/*  		 * GFP_THISNODE contains __GFP_NORETRY and we never hit this.  		 * Sanity check for bare calls of __GFP_THISNODE, not real OOM. | 
