diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
index 8ad3a29eb72850079eb9f22c78f3ae071fc59919..5617cc41244446f6b3065922bf0a0147c3b61394 100644
--- a/kernel/kexec_core.c
+++ b/kernel/kexec_core.c
@@ -441,6 +441,8 @@ static struct page *kimage_alloc_crash_control_pages(struct kimage *image,
 	while (hole_end <= crashk_res.end) {
 		unsigned long i;
 
+		cond_resched();
+
 		if (hole_end > KEXEC_CRASH_CONTROL_MEMORY_LIMIT)
 			break;
 		/* See if I overlap any of the segments */