diff options
author | rwatson <rwatson@FreeBSD.org> | 2005-01-23 21:01:00 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2005-01-23 21:01:00 +0000 |
commit | 1d8015ceb7d7567b75c83f37f7f00510ee6eeca6 (patch) | |
tree | 40c954b7cf2cb0de0445741dbf28d7a16e8e0fa7 /sys/kern/kern_prot.c | |
parent | 293a12c083ef4fd97d15da81ffbef7ec687153ba (diff) | |
download | FreeBSD-src-1d8015ceb7d7567b75c83f37f7f00510ee6eeca6.zip FreeBSD-src-1d8015ceb7d7567b75c83f37f7f00510ee6eeca6.tar.gz |
When reading pr_securelevel from a prison, perform a lockless read,
as it's an integer read operation and the resulting slight race is
acceptable.
MFC after: 1 week
Diffstat (limited to 'sys/kern/kern_prot.c')
-rw-r--r-- | sys/kern/kern_prot.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c index 2f988ea..57216db 100644 --- a/sys/kern/kern_prot.c +++ b/sys/kern/kern_prot.c @@ -1276,10 +1276,8 @@ securelevel_gt(struct ucred *cr, int level) active_securelevel = securelevel; KASSERT(cr != NULL, ("securelevel_gt: null cr")); if (cr->cr_prison != NULL) { - mtx_lock(&cr->cr_prison->pr_mtx); active_securelevel = imax(cr->cr_prison->pr_securelevel, active_securelevel); - mtx_unlock(&cr->cr_prison->pr_mtx); } return (active_securelevel > level ? EPERM : 0); } @@ -1292,10 +1290,8 @@ securelevel_ge(struct ucred *cr, int level) active_securelevel = securelevel; KASSERT(cr != NULL, ("securelevel_ge: null cr")); if (cr->cr_prison != NULL) { - mtx_lock(&cr->cr_prison->pr_mtx); active_securelevel = imax(cr->cr_prison->pr_securelevel, active_securelevel); - mtx_unlock(&cr->cr_prison->pr_mtx); } return (active_securelevel >= level ? EPERM : 0); } |