aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/ptrace.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2011-03-23 10:37:00 +0100
committerTejun Heo <tj@kernel.org>2011-03-23 10:37:00 +0100
commit9f2bf6513a6cca0b00cbbf67ba6197017cfba548 (patch)
treeda20b400d446248fb9a578cc40da08d4398830bc /kernel/ptrace.c
parentc672af35d54992b88d3c48133bd62cc3386fb2f9 (diff)
downloadkernel_samsung_smdk4412-9f2bf6513a6cca0b00cbbf67ba6197017cfba548.tar.gz
kernel_samsung_smdk4412-9f2bf6513a6cca0b00cbbf67ba6197017cfba548.tar.bz2
kernel_samsung_smdk4412-9f2bf6513a6cca0b00cbbf67ba6197017cfba548.zip
ptrace: Remove the extra wake_up_state() from ptrace_detach()
This wake_up_state() has a turbulent history. This is a remnant from ancient ptrace implementation and patently wrong. Commit 95a3540d (ptrace_detach: the wrong wakeup breaks the ERESTARTxxx logic) removed it but the change was reverted later by commit edaba2c5 (ptrace: revert "ptrace_detach: the wrong wakeup breaks the ERESTARTxxx logic") citing compatibility breakage and general brokeness of the whole group stop / ptrace interaction. Then, recently, it got converted from wake_up_process() to wake_up_state() to make it less dangerous. Digging through the mailing archives, the compatibility breakage doesn't seem to be critical in the sense that the behavior isn't well defined or reliable to begin with and it seems to have been agreed to remove the wakeup with proper cleanup of the whole thing. Now that the group stop and its interaction with ptrace are being cleaned up, it's high time to finally kill this silliness. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Oleg Nesterov <oleg@redhat.com> Cc: Roland McGrath <roland@redhat.com>
Diffstat (limited to 'kernel/ptrace.c')
-rw-r--r--kernel/ptrace.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index e2302e40b36..6acf8954017 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -312,8 +312,6 @@ static int ptrace_detach(struct task_struct *child, unsigned int data)
if (child->ptrace) {
child->exit_code = data;
dead = __ptrace_detach(current, child);
- if (!child->exit_state)
- wake_up_state(child, TASK_TRACED | TASK_STOPPED);
}
write_unlock_irq(&tasklist_lock);