From 9cbcfd1ffff1d697a7ccc47fa013396d2f7154e5 Mon Sep 17 00:00:00 2001 From: jhb Date: Tue, 1 Aug 2006 15:30:56 +0000 Subject: Don't lock each of the processes while looking for a pid. The allproc and proctree locks that we already hold provide sufficient protection. --- sys/kern/kern_fork.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index 3b2de92..66361b2 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -377,17 +377,14 @@ retry: p2 = LIST_FIRST(&allproc); again: for (; p2 != NULL; p2 = LIST_NEXT(p2, p_list)) { - PROC_LOCK(p2); while (p2->p_pid == trypid || (p2->p_pgrp != NULL && (p2->p_pgrp->pg_id == trypid || (p2->p_session != NULL && p2->p_session->s_sid == trypid)))) { trypid++; - if (trypid >= pidchecked) { - PROC_UNLOCK(p2); + if (trypid >= pidchecked) goto retry; - } } if (p2->p_pid > trypid && pidchecked > p2->p_pid) pidchecked = p2->p_pid; @@ -400,7 +397,6 @@ again: pidchecked > p2->p_session->s_sid) pidchecked = p2->p_session->s_sid; } - PROC_UNLOCK(p2); } if (!doingzomb) { doingzomb = 1; -- cgit v1.1