aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/kern/sys_process.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c
index d08f342723e7..03640cf6e11d 100644
--- a/sys/kern/sys_process.c
+++ b/sys/kern/sys_process.c
@@ -381,7 +381,12 @@ ptrace(curp, uap)
struct proc *pp;
pp = pfind(p->p_oppid);
- proc_reparent(p, pp ? pp : initproc);
+ if (pp != NULL)
+ PROC_UNLOCK(pp);
+ else
+ pp = initproc;
+ PROC_LOCK(p);
+ proc_reparent(p, pp);
} else
PROC_LOCK(p);
p->p_flag &= ~(P_TRACED | P_WAITED);