aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/fork.c
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@redhat.com>2012-03-05 17:59:14 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2012-03-05 18:49:42 -0500
commit6e27f63edbd7ab893258e16500171dd1270a1369 (patch)
tree9c61b7c0dda37052e2285e90f914f8af5ed86f67 /kernel/fork.c
parent57b59c4a1400fa6c34764eab2e35a8762dc05a09 (diff)
vfork: kill PF_STARTING
Previously it was (ab)used by utrace. Then it was wrongly used by the scheduler code. Currently it is not used, kill it before it finds the new erroneous user. Signed-off-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/fork.c')
-rw-r--r--kernel/fork.c9
1 files changed, 0 insertions, 9 deletions
diff --git a/kernel/fork.c b/kernel/fork.c
index 44b0e21af50e..26a7a6707fa7 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1046,7 +1046,6 @@ static void copy_flags(unsigned long clone_flags, struct task_struct *p)
1046 1046
1047 new_flags &= ~(PF_SUPERPRIV | PF_WQ_WORKER); 1047 new_flags &= ~(PF_SUPERPRIV | PF_WQ_WORKER);
1048 new_flags |= PF_FORKNOEXEC; 1048 new_flags |= PF_FORKNOEXEC;
1049 new_flags |= PF_STARTING;
1050 p->flags = new_flags; 1049 p->flags = new_flags;
1051} 1050}
1052 1051
@@ -1579,14 +1578,6 @@ long do_fork(unsigned long clone_flags,
1579 get_task_struct(p); 1578 get_task_struct(p);
1580 } 1579 }
1581 1580
1582 /*
1583 * We set PF_STARTING at creation in case tracing wants to
1584 * use this to distinguish a fully live task from one that
1585 * hasn't finished SIGSTOP raising yet. Now we clear it
1586 * and set the child going.
1587 */
1588 p->flags &= ~PF_STARTING;
1589
1590 wake_up_new_task(p); 1581 wake_up_new_task(p);
1591 1582
1592 /* forking complete and child started to run, tell ptracer */ 1583 /* forking complete and child started to run, tell ptracer */