diff options
| -rw-r--r-- | mm/swapfile.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c index 03aa2d55f1a..f08d165871b 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -318,8 +318,10 @@ checks:  	if (offset > si->highest_bit)  		scan_base = offset = si->lowest_bit; -	/* reuse swap entry of cache-only swap if not busy. */ -	if (vm_swap_full() && si->swap_map[offset] == SWAP_HAS_CACHE) { +	/* reuse swap entry of cache-only swap if not hibernation. */ +	if (vm_swap_full() +		&& usage == SWAP_HAS_CACHE +		&& si->swap_map[offset] == SWAP_HAS_CACHE) {  		int swap_was_freed;  		spin_unlock(&swap_lock);  		swap_was_freed = __try_to_reclaim_swap(si, offset);  |