diff --git a/kernel/exit.c b/kernel/exit.c
index bc71fdfcd8a78d4a6b0f466b11f55cb8354bacdd..14f17033f5635cf41fedbaec35c92b14f1a91933 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -430,8 +430,10 @@ static void close_files(struct files_struct * files)
 		while (set) {
 			if (set & 1) {
 				struct file * file = xchg(&fdt->fd[i], NULL);
-				if (file)
+				if (file) {
 					filp_close(file, files);
+					cond_resched();
+				}
 			}
 			i++;
 			set >>= 1;