diff options
Diffstat (limited to 'sys/kern/kern_proc.c')
-rw-r--r-- | sys/kern/kern_proc.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index 793c068..814a29e 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -122,11 +122,11 @@ pfind(pid) { register struct proc *p; - lockmgr(&allproc_lock, LK_SHARED, NULL, CURPROC); + ALLPROC_LOCK(AP_SHARED); LIST_FOREACH(p, PIDHASH(pid), p_hash) if (p->p_pid == pid) break; - lockmgr(&allproc_lock, LK_RELEASE, NULL, CURPROC); + ALLPROC_LOCK(AP_RELEASE); return (p); } @@ -478,10 +478,12 @@ zpfind(pid_t pid) { struct proc *p; + ALLPROC_LOCK(AP_SHARED); LIST_FOREACH(p, &zombproc, p_list) if (p->p_pid == pid) - return (p); - return (NULL); + break; + ALLPROC_LOCK(AP_RELEASE); + return (p); } @@ -536,7 +538,7 @@ sysctl_kern_proc(SYSCTL_HANDLER_ARGS) if (error) return (error); } - lockmgr(&allproc_lock, LK_SHARED, NULL, CURPROC); + ALLPROC_LOCK(AP_SHARED); for (doingzomb=0 ; doingzomb < 2 ; doingzomb++) { if (!doingzomb) p = LIST_FIRST(&allproc); @@ -593,13 +595,12 @@ sysctl_kern_proc(SYSCTL_HANDLER_ARGS) error = sysctl_out_proc(p, req, doingzomb); if (error) { - lockmgr(&allproc_lock, LK_RELEASE, NULL, - CURPROC); + ALLPROC_LOCK(AP_RELEASE); return (error); } } } - lockmgr(&allproc_lock, LK_RELEASE, NULL, CURPROC); + ALLPROC_LOCK(AP_RELEASE); return (0); } |