diff options
| -rw-r--r-- | sys/kern/sys_process.c | 7 |
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); |
