|
@@ -679,8 +679,6 @@ static void exit_mm(struct task_struct * tsk)
|
|
|
tsk->mm = NULL;
|
|
|
up_read(&mm->mmap_sem);
|
|
|
enter_lazy_tlb(mm, current);
|
|
|
- /* We don't want this task to be frozen prematurely */
|
|
|
- clear_freeze_flag(tsk);
|
|
|
task_unlock(tsk);
|
|
|
mm_update_next_owner(mm);
|
|
|
mmput(mm);
|
|
@@ -1040,6 +1038,7 @@ NORET_TYPE void do_exit(long code)
|
|
|
exit_rcu();
|
|
|
/* causes final put_task_struct in finish_task_switch(). */
|
|
|
tsk->state = TASK_DEAD;
|
|
|
+ tsk->flags |= PF_NOFREEZE; /* tell freezer to ignore us */
|
|
|
schedule();
|
|
|
BUG();
|
|
|
/* Avoid "noreturn function does return". */
|