Browse Source

[PATCH] PF_DEAD cleanup

The PF_DEAD setting doesn't belong to exit_notify(), move it to a proper
place.

Signed-off-by: Coywolf Qi Hunt <qiyong@fc-cn.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Coywolf Qi Hunt 19 years ago
parent
commit
7407251a0e
1 changed files with 5 additions and 5 deletions
  1. 5 5
      kernel/exit.c

+ 5 - 5
kernel/exit.c

@@ -783,10 +783,6 @@ static void exit_notify(struct task_struct *tsk)
 	/* If the process is dead, release it - nobody will wait for it */
 	/* If the process is dead, release it - nobody will wait for it */
 	if (state == EXIT_DEAD)
 	if (state == EXIT_DEAD)
 		release_task(tsk);
 		release_task(tsk);
-
-	/* PF_DEAD causes final put_task_struct after we schedule. */
-	preempt_disable();
-	tsk->flags |= PF_DEAD;
 }
 }
 
 
 fastcall NORET_TYPE void do_exit(long code)
 fastcall NORET_TYPE void do_exit(long code)
@@ -873,7 +869,11 @@ fastcall NORET_TYPE void do_exit(long code)
 	tsk->mempolicy = NULL;
 	tsk->mempolicy = NULL;
 #endif
 #endif
 
 
-	BUG_ON(!(current->flags & PF_DEAD));
+	/* PF_DEAD causes final put_task_struct after we schedule. */
+	preempt_disable();
+	BUG_ON(tsk->flags & PF_DEAD);
+	tsk->flags |= PF_DEAD;
+
 	schedule();
 	schedule();
 	BUG();
 	BUG();
 	/* Avoid "noreturn function does return".  */
 	/* Avoid "noreturn function does return".  */