diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2008-02-08 13:18:58 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 18:22:26 +0100 |
commit | 6b39c7bfbd1436836c0fb34c5b437fda1a7a3dd4 (patch) | |
tree | 60d3d9719eef3076527fcbf9c3cb362fe0f52d61 /kernel/ptrace.c | |
parent | IPC: consolidate sem_exit_ns(), msg_exit_ns() and shm_exit_ns() (diff) | |
download | linux-6b39c7bfbd1436836c0fb34c5b437fda1a7a3dd4.tar.xz linux-6b39c7bfbd1436836c0fb34c5b437fda1a7a3dd4.zip |
kill PT_ATTACHED
Since the patch
"Fix ptrace_attach()/ptrace_traceme()/de_thread() race"
commit f5b40e363ad6041a96e3da32281d8faa191597b9
we set PT_ATTACHED and change child->parent "atomically" wrt task_list lock.
This means we can remove the checks like "PT_ATTACHED && ->parent != ptracer"
which were needed to catch the "ptrace attach is in progress" case. We can
also remove the flag itself since nobody else uses it.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Acked-by: Roland McGrath <roland@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/ptrace.c')
-rw-r--r-- | kernel/ptrace.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/kernel/ptrace.c b/kernel/ptrace.c index 628b03ab88a5..2dc00298e678 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c @@ -100,8 +100,7 @@ int ptrace_check_attach(struct task_struct *child, int kill) */ read_lock(&tasklist_lock); if ((child->ptrace & PT_PTRACED) && child->parent == current && - (!(child->ptrace & PT_ATTACHED) || child->real_parent != current) - && child->signal != NULL) { + child->signal != NULL) { ret = 0; spin_lock_irq(&child->sighand->siglock); if (task_is_stopped(child)) @@ -200,8 +199,7 @@ repeat: goto bad; /* Go */ - task->ptrace |= PT_PTRACED | ((task->real_parent != current) - ? PT_ATTACHED : 0); + task->ptrace |= PT_PTRACED; if (capable(CAP_SYS_PTRACE)) task->ptrace |= PT_PTRACE_CAP; |