diff options
| author | Tim J. Robbins <tjr@FreeBSD.org> | 2003-03-13 00:54:53 +0000 |
|---|---|---|
| committer | Tim J. Robbins <tjr@FreeBSD.org> | 2003-03-13 00:54:53 +0000 |
| commit | 262c27b84616c410f8b6ff190c606faeb7f24cce (patch) | |
| tree | d4dbe216f9c1b7217af90405ea4d130e644fa40d /sys/kern/kern_resource.c | |
| parent | f3b8b63b156975df6b012a7f919780a81a1a6afd (diff) | |
Notes
Diffstat (limited to 'sys/kern/kern_resource.c')
| -rw-r--r-- | sys/kern/kern_resource.c | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c index 65bcfd45463b..5dfbfd725e88 100644 --- a/sys/kern/kern_resource.c +++ b/sys/kern/kern_resource.c @@ -98,21 +98,17 @@ getpriority(td, uap) switch (uap->which) { case PRIO_PROCESS: - if (uap->who == 0) { - mtx_lock_spin(&sched_lock); + if (uap->who == 0) low = td->td_ksegrp->kg_nice; - mtx_unlock_spin(&sched_lock); - } else { + else { p = pfind(uap->who); if (p == NULL) break; if (p_cansee(td, p) == 0) { - mtx_lock_spin(&sched_lock); FOREACH_KSEGRP_IN_PROC(p, kg) { if (kg->kg_nice < low) low = kg->kg_nice; } - mtx_unlock_spin(&sched_lock); } PROC_UNLOCK(p); } @@ -136,12 +132,10 @@ getpriority(td, uap) LIST_FOREACH(p, &pg->pg_members, p_pglist) { PROC_LOCK(p); if (!p_cansee(td, p)) { - mtx_lock_spin(&sched_lock); FOREACH_KSEGRP_IN_PROC(p, kg) { if (kg->kg_nice < low) low = kg->kg_nice; } - mtx_unlock_spin(&sched_lock); } PROC_UNLOCK(p); } @@ -157,12 +151,10 @@ getpriority(td, uap) PROC_LOCK(p); if (!p_cansee(td, p) && p->p_ucred->cr_uid == uap->who) { - mtx_lock_spin(&sched_lock); FOREACH_KSEGRP_IN_PROC(p, kg) { if (kg->kg_nice < low) low = kg->kg_nice; } - mtx_unlock_spin(&sched_lock); } PROC_UNLOCK(p); } @@ -297,19 +289,15 @@ donice(struct thread *td, struct proc *p, int n) * Only allow nicing if to more than the lowest nice. * e.g. nices of 4,3,2 allow nice to 3 but not 1 */ - mtx_lock_spin(&sched_lock); FOREACH_KSEGRP_IN_PROC(p, kg) { if (kg->kg_nice < low) low = kg->kg_nice; } - if (n < low && suser(td)) { - mtx_unlock_spin(&sched_lock); + if (n < low && suser(td)) return (EACCES); - } FOREACH_KSEGRP_IN_PROC(p, kg) { sched_nice(kg, n); } - mtx_unlock_spin(&sched_lock); return (0); } |
