diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c
index 1ec0647a20268abfef03d24124d4ab01538be339..f4d5db3597187cab06de1d6e9e8773c43b117c49 100644
--- a/fs/proc/vmcore.c
+++ b/fs/proc/vmcore.c
@@ -383,6 +383,8 @@ static ssize_t __read_vmcore(struct iov_iter *iter, loff_t *fpos)
 		/* leave now if filled buffer already */
 		if (!iov_iter_count(iter))
 			return acc;
+
+		cond_resched();
 	}
 
 	list_for_each_entry(m, &vmcore_list, list) {