|
@@ -88,11 +88,12 @@ static void __exit_signal(struct task_struct *tsk)
|
|
rcu_read_lock_held() ||
|
|
rcu_read_lock_held() ||
|
|
lockdep_tasklist_lock_is_held());
|
|
lockdep_tasklist_lock_is_held());
|
|
spin_lock(&sighand->siglock);
|
|
spin_lock(&sighand->siglock);
|
|
|
|
+ atomic_dec(&sig->count);
|
|
|
|
|
|
posix_cpu_timers_exit(tsk);
|
|
posix_cpu_timers_exit(tsk);
|
|
- if (atomic_dec_and_test(&sig->count))
|
|
|
|
|
|
+ if (thread_group_leader(tsk)) {
|
|
posix_cpu_timers_exit_group(tsk);
|
|
posix_cpu_timers_exit_group(tsk);
|
|
- else {
|
|
|
|
|
|
+ } else {
|
|
/*
|
|
/*
|
|
* If there is any task waiting for the group exit
|
|
* If there is any task waiting for the group exit
|
|
* then notify it:
|
|
* then notify it:
|