diff --git a/mm/compaction.c b/mm/compaction.c
index 613c59e928cb5b07075c197126e01b9cdafff992..fb548e4c7bd4b44f426a8e45c5230508c57d36e6 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -236,10 +236,9 @@ static void __reset_isolation_suitable(struct zone *zone)
 
 		cond_resched();
 
-		if (!pfn_valid(pfn))
+		page = pfn_to_online_page(pfn);
+		if (!page)
 			continue;
-
-		page = pfn_to_page(pfn);
 		if (zone != page_zone(page))
 			continue;