diff --git a/mm/vmscan.c b/mm/vmscan.c
index 30fd658bb2897076d4fec53a5b0435d095daaec6..b8a6fdc2131258db15321021375117cae27cec0d 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -651,7 +651,7 @@ static enum page_references page_check_references(struct page *page,
 	}
 
 	/* Reclaim if clean, defer dirty pages to writeback */
-	if (referenced_page)
+	if (referenced_page && !PageSwapBacked(page))
 		return PAGEREF_RECLAIM_CLEAN;
 
 	return PAGEREF_RECLAIM;