summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_resource.c
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2000-11-22 07:42:04 +0000
committerjake <jake@FreeBSD.org>2000-11-22 07:42:04 +0000
commit0c0be4e82677a2d8fb49b7a70676bf359e7360b0 (patch)
treea0c32260edfde6d861e66b11172147608684043e /sys/kern/kern_resource.c
parent1b544875743d53491a096b0c757bf30ce73bb83b (diff)
downloadFreeBSD-src-0c0be4e82677a2d8fb49b7a70676bf359e7360b0.zip
FreeBSD-src-0c0be4e82677a2d8fb49b7a70676bf359e7360b0.tar.gz
Protect the following with a lockmgr lock:
allproc zombproc pidhashtbl proc.p_list proc.p_hash nextpid Reviewed by: jhb Obtained from: BSD/OS and netbsd
Diffstat (limited to 'sys/kern/kern_resource.c')
-rw-r--r--sys/kern/kern_resource.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c
index b0d38c0..f37d49d 100644
--- a/sys/kern/kern_resource.c
+++ b/sys/kern/kern_resource.c
@@ -119,11 +119,13 @@ getpriority(curp, uap)
case PRIO_USER:
if (uap->who == 0)
uap->who = curp->p_ucred->cr_uid;
+ lockmgr(&allproc_lock, LK_SHARED, NULL, CURPROC);
LIST_FOREACH(p, &allproc, p_list)
if (!p_can(curp, p, P_CAN_SEE, NULL) &&
p->p_ucred->cr_uid == uap->who &&
p->p_nice < low)
low = p->p_nice;
+ lockmgr(&allproc_lock, LK_RELEASE, NULL, CURPROC);
break;
default:
@@ -185,12 +187,14 @@ setpriority(curp, uap)
case PRIO_USER:
if (uap->who == 0)
uap->who = curp->p_ucred->cr_uid;
+ lockmgr(&allproc_lock, LK_SHARED, NULL, CURPROC);
LIST_FOREACH(p, &allproc, p_list)
if (p->p_ucred->cr_uid == uap->who &&
!p_can(curp, p, P_CAN_SEE, NULL)) {
error = donice(curp, p, uap->prio);
found++;
}
+ lockmgr(&allproc_lock, LK_RELEASE, NULL, CURPROC);
break;
default:
OpenPOWER on IntegriCloud