summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_lock.c
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2000-12-01 02:18:38 +0000
committerjake <jake@FreeBSD.org>2000-12-01 02:18:38 +0000
commite24e384465a01cf971b2f8f70207e33b60b497d0 (patch)
tree1666130cc640f98909f016c0db3142dc2bd42f36 /sys/kern/kern_lock.c
parent198c36b485e44b0ed782f2fbc1109622dec8a13c (diff)
downloadFreeBSD-src-e24e384465a01cf971b2f8f70207e33b60b497d0.zip
FreeBSD-src-e24e384465a01cf971b2f8f70207e33b60b497d0.tar.gz
Use msleep instead of mtx_exit; tsleep; mtx_enter, which is not safe.
Diffstat (limited to 'sys/kern/kern_lock.c')
-rw-r--r--sys/kern/kern_lock.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/sys/kern/kern_lock.c b/sys/kern/kern_lock.c
index 11237c0..158377d 100644
--- a/sys/kern/kern_lock.c
+++ b/sys/kern/kern_lock.c
@@ -186,9 +186,8 @@ acquire(struct lock *lkp, int extflags, int wanted) {
while ((lkp->lk_flags & wanted) != 0) {
lkp->lk_flags |= LK_WAIT_NONZERO;
lkp->lk_waitcount++;
- mtx_exit(lkp->lk_interlock, MTX_DEF);
- error = tsleep(lkp, lkp->lk_prio, lkp->lk_wmesg, lkp->lk_timo);
- mtx_enter(lkp->lk_interlock, MTX_DEF);
+ error = msleep(lkp, lkp->lk_interlock, lkp->lk_prio,
+ lkp->lk_wmesg, lkp->lk_timo);
if (lkp->lk_waitcount == 1) {
lkp->lk_flags &= ~LK_WAIT_NONZERO;
lkp->lk_waitcount = 0;
@@ -502,10 +501,8 @@ acquiredrain(struct lock *lkp, int extflags) {
while (lkp->lk_flags & LK_ALL) {
lkp->lk_flags |= LK_WAITDRAIN;
- mtx_exit(lkp->lk_interlock, MTX_DEF);
- error = tsleep(&lkp->lk_flags, lkp->lk_prio,
+ error = msleep(&lkp->lk_flags, lkp->lk_interlock, lkp->lk_prio,
lkp->lk_wmesg, lkp->lk_timo);
- mtx_enter(lkp->lk_interlock, MTX_DEF);
if (error)
return error;
if (extflags & LK_SLEEPFAIL) {
OpenPOWER on IntegriCloud