if (!thread_group_leader(current)) {
                struct task_struct *parent;
                struct dentry *proc_dentry1, *proc_dentry2;
-               unsigned long exit_state, ptrace;
+               unsigned long ptrace;
 
                /*
                 * Wait for the thread group leader to be a zombie.
                list_del(¤t->tasks);
                list_add_tail(¤t->tasks, &init_task.tasks);
                current->exit_signal = SIGCHLD;
-               exit_state = leader->exit_state;
+
+               BUG_ON(leader->exit_state != EXIT_ZOMBIE);
+               leader->exit_state = EXIT_DEAD;
 
                write_unlock_irq(&tasklist_lock);
                spin_unlock(&leader->proc_lock);
                spin_unlock(¤t->proc_lock);
                proc_pid_flush(proc_dentry1);
                proc_pid_flush(proc_dentry2);
-
-               BUG_ON(exit_state != EXIT_ZOMBIE);
         }
 
        /*