diff options
Diffstat (limited to 'mm')
| -rw-r--r-- | mm/vmscan.c | 14 | 
1 files changed, 5 insertions, 9 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index ab5019700dc3..1b14a1b2539c 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3578,18 +3578,14 @@ static bool throttle_direct_reclaim(gfp_t gfp_mask, struct zonelist *zonelist,  	 * blocked waiting on the same lock. Instead, throttle for up to a  	 * second before continuing.  	 */ -	if (!(gfp_mask & __GFP_FS)) { +	if (!(gfp_mask & __GFP_FS))  		wait_event_interruptible_timeout(pgdat->pfmemalloc_wait,  			allow_direct_reclaim(pgdat), HZ); +	else +		/* Throttle until kswapd wakes the process */ +		wait_event_killable(zone->zone_pgdat->pfmemalloc_wait, +			allow_direct_reclaim(pgdat)); -		goto check_pending; -	} - -	/* Throttle until kswapd wakes the process */ -	wait_event_killable(zone->zone_pgdat->pfmemalloc_wait, -		allow_direct_reclaim(pgdat)); - -check_pending:  	if (fatal_signal_pending(current))  		return true;  | 
