summaryrefslogtreecommitdiffstats
path: root/sys/compat/svr4/svr4_misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/compat/svr4/svr4_misc.c')
-rw-r--r--sys/compat/svr4/svr4_misc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/compat/svr4/svr4_misc.c b/sys/compat/svr4/svr4_misc.c
index 4d921b5..601d205 100644
--- a/sys/compat/svr4/svr4_misc.c
+++ b/sys/compat/svr4/svr4_misc.c
@@ -953,16 +953,19 @@ svr4_pfind(pid)
{
struct proc *p;
+ ALLPROC_LOCK(AP_SHARED);
/* look in the live processes */
if ((p = pfind(pid)) != NULL)
- return p;
+ goto out;
/* look in the zombies */
for (p = zombproc.lh_first; p != 0; p = p->p_list.le_next)
if (p->p_pid == pid)
- return p;
+ break;
+out:
+ ALLPROC_LOCK(AP_RELEASE);
- return NULL;
+ return p;
}
@@ -1253,7 +1256,9 @@ loop:
*/
leavepgrp(q);
+ ALLPROC_LOCK(AP_EXCLUSIVE);
LIST_REMOVE(q, p_list); /* off zombproc */
+ ALLPROC_LOCK(AP_RELEASE);
LIST_REMOVE(q, p_sibling);
OpenPOWER on IntegriCloud