--- a/kernel/exit.c 2006-05-02 17:31:39.000000000 +0200 +++ b/kernel/exit.c 2006-05-02 17:32:06.000000000 +0200 @@ -445,20 +445,21 @@ set = fdt->open_fds->fds_bits[j++]; while (set) { if (set & 1) { struct file * file = xchg(&fdt->fd[i], NULL); if (file) filp_close(file, files); } i++; set >>= 1; } + cond_resched(); } } struct files_struct *get_files_struct(struct task_struct *task) { struct files_struct *files; task_lock(task); files = task->files; if (files)