diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 69827d4fa0527dc1dbacdc1b0af711df0929d89f..f31eda080823706e19acc5211dd142adb46bf019 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1607,6 +1607,7 @@ void set_zone_contiguous(struct zone *zone)
 		if (!__pageblock_pfn_to_page(block_start_pfn,
 					     block_end_pfn, zone))
 			return;
+		cond_resched();
 	}
 
 	/* We confirm that there is no hole */