X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=fs%2Fexec.c;h=02d2e120542d76ca26ee233e638749e53bc227f0;hb=bb758e9637e5ddcff84a97177415499ae1fed498;hp=1f59ea079cbb80f1910c98a828f0cb32f1d6292c;hpb=5f34fe1cfc1bdd8b4711bbe37421fba4ed0d1ed4;p=linux-2.6-omap-h63xx.git diff --git a/fs/exec.c b/fs/exec.c index 1f59ea079cb..02d2e120542 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -773,7 +773,6 @@ static int de_thread(struct task_struct *tsk) struct signal_struct *sig = tsk->signal; struct sighand_struct *oldsighand = tsk->sighand; spinlock_t *lock = &oldsighand->siglock; - struct task_struct *leader = NULL; int count; if (thread_group_empty(tsk)) @@ -811,7 +810,7 @@ static int de_thread(struct task_struct *tsk) * and to assume its PID: */ if (!thread_group_leader(tsk)) { - leader = tsk->group_leader; + struct task_struct *leader = tsk->group_leader; sig->notify_count = -1; /* for exit_notify() */ for (;;) { @@ -863,8 +862,9 @@ static int de_thread(struct task_struct *tsk) BUG_ON(leader->exit_state != EXIT_ZOMBIE); leader->exit_state = EXIT_DEAD; - write_unlock_irq(&tasklist_lock); + + release_task(leader); } sig->group_exit_task = NULL; @@ -873,8 +873,6 @@ static int de_thread(struct task_struct *tsk) no_thread_group: exit_itimers(sig); flush_itimer_signals(); - if (leader) - release_task(leader); if (atomic_read(&oldsighand->count) != 1) { struct sighand_struct *newsighand;