diff options
Diffstat (limited to 'kernel/exit.c')
| -rw-r--r-- | kernel/exit.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 2f59cc334516..d17f6c4ddfa9 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
| @@ -953,14 +953,11 @@ void do_exit(long code) | |||
| 953 | exit_signals(tsk); /* sets PF_EXITING */ | 953 | exit_signals(tsk); /* sets PF_EXITING */ |
| 954 | /* | 954 | /* |
| 955 | * tsk->flags are checked in the futex code to protect against | 955 | * tsk->flags are checked in the futex code to protect against |
| 956 | * an exiting task cleaning up the robust pi futexes, and in | 956 | * an exiting task cleaning up the robust pi futexes. |
| 957 | * task_work_add() to avoid the race with exit_task_work(). | ||
| 958 | */ | 957 | */ |
| 959 | smp_mb(); | 958 | smp_mb(); |
| 960 | raw_spin_unlock_wait(&tsk->pi_lock); | 959 | raw_spin_unlock_wait(&tsk->pi_lock); |
| 961 | 960 | ||
| 962 | exit_task_work(tsk); | ||
| 963 | |||
| 964 | if (unlikely(in_atomic())) | 961 | if (unlikely(in_atomic())) |
| 965 | printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n", | 962 | printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n", |
| 966 | current->comm, task_pid_nr(current), | 963 | current->comm, task_pid_nr(current), |
| @@ -995,6 +992,7 @@ void do_exit(long code) | |||
| 995 | exit_shm(tsk); | 992 | exit_shm(tsk); |
| 996 | exit_files(tsk); | 993 | exit_files(tsk); |
| 997 | exit_fs(tsk); | 994 | exit_fs(tsk); |
| 995 | exit_task_work(tsk); | ||
| 998 | check_stack_usage(); | 996 | check_stack_usage(); |
| 999 | exit_thread(); | 997 | exit_thread(); |
| 1000 | 998 | ||
