summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_process.c
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2008-11-05 03:01:23 +0000
committerdavidxu <davidxu@FreeBSD.org>2008-11-05 03:01:23 +0000
commit1ebf3ee9a3db9492efa600f6c7614a1851e8c357 (patch)
tree50003b0f3882d55b6d31a3135664f3a2abd73c56 /sys/kern/sys_process.c
parente07ee09f61c3fc9b2a221bb67f0bb35f0da0ce63 (diff)
downloadFreeBSD-src-1ebf3ee9a3db9492efa600f6c7614a1851e8c357.zip
FreeBSD-src-1ebf3ee9a3db9492efa600f6c7614a1851e8c357.tar.gz
Revert rev 184216 and 184199, due to the way the thread_lock works,
it may cause a lockup. Noticed by: peter, jhb
Diffstat (limited to 'sys/kern/sys_process.c')
-rw-r--r--sys/kern/sys_process.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c
index c67af8c..ceae8de 100644
--- a/sys/kern/sys_process.c
+++ b/sys/kern/sys_process.c
@@ -795,8 +795,10 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data)
* you should use PT_SUSPEND to suspend it before
* continuing process.
*/
+ PROC_SLOCK(p);
p->p_flag &= ~(P_STOPPED_TRACE|P_STOPPED_SIG|P_WAITED);
thread_unsuspend(p);
+ PROC_SUNLOCK(p);
} else {
if (data)
psignal(p, data);
OpenPOWER on IntegriCloud