diff options
author | davidxu <davidxu@FreeBSD.org> | 2006-10-25 06:18:04 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2006-10-25 06:18:04 +0000 |
commit | 4889cc1ac49302812a7e00fb0e72972f1ad9a47b (patch) | |
tree | 2b0e8f6fd8ee218b26cec1b7e6a623b4bd535ff4 /sys/kern/sys_process.c | |
parent | 3015e34f1c3fab39f699d47338f6e344ee202ce2 (diff) | |
download | FreeBSD-src-4889cc1ac49302812a7e00fb0e72972f1ad9a47b.zip FreeBSD-src-4889cc1ac49302812a7e00fb0e72972f1ad9a47b.tar.gz |
Move sigqueue_take() call into proc_reparent(), this fixed bugs where
proc_reparent() is called but sigqueue_take() is forgotten.
Diffstat (limited to 'sys/kern/sys_process.c')
-rw-r--r-- | sys/kern/sys_process.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index 26dd0f7..0624b6f 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -690,12 +690,8 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data) /* security check done above */ p->p_flag |= P_TRACED; p->p_oppid = p->p_pptr->p_pid; - if (p->p_pptr != td->td_proc) { - PROC_LOCK(p->p_pptr); - sigqueue_take(p->p_ksi); - PROC_UNLOCK(p->p_pptr); + if (p->p_pptr != td->td_proc) proc_reparent(p, td->td_proc); - } data = SIGSTOP; goto sendsig; /* in PT_CONTINUE below */ |