aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/subr_turnstile.c
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2003-03-04 20:30:30 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2003-03-04 20:30:30 +0000
commit6b869595c510d2dcffd8d7f0a0eb4c9b3d0ce3e9 (patch)
treebfadcba251e0434b249b1568c7be8a0e8f454a12 /sys/kern/subr_turnstile.c
parentd7a715dc649078c721191aa6dc234dd6afd4d8a6 (diff)
downloadsrc-6b869595c510d2dcffd8d7f0a0eb4c9b3d0ce3e9.tar.gz
src-6b869595c510d2dcffd8d7f0a0eb4c9b3d0ce3e9.zip
Properly assert that mtx_trylock() is not called on a mutex we already
owned. Previously the KASSERT would only trigger if we successfully acquired a lock that we already held. However, _obtain_lock() fails to acquire locks that we already hold, so the KASSERT was never checked in the case it was supposed to fail.
Notes
Notes: svn path=/head/; revision=111879
Diffstat (limited to 'sys/kern/subr_turnstile.c')
-rw-r--r--sys/kern/subr_turnstile.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/sys/kern/subr_turnstile.c b/sys/kern/subr_turnstile.c
index 039621b72206..f5641c5584e9 100644
--- a/sys/kern/subr_turnstile.c
+++ b/sys/kern/subr_turnstile.c
@@ -464,19 +464,15 @@ _mtx_trylock(struct mtx *m, int opts, const char *file, int line)
MPASS(curthread != NULL);
+ KASSERT(!mtx_owned(m),
+ ("mtx_trylock() called on a mutex already owned"));
+
rval = _obtain_lock(m, curthread);
LOCK_LOG_TRY("LOCK", &m->mtx_object, opts, rval, file, line);
- if (rval) {
- /*
- * We do not handle recursion in _mtx_trylock; see the
- * note at the top of the routine.
- */
- KASSERT(!mtx_recursed(m),
- ("mtx_trylock() called on a recursed mutex"));
+ if (rval)
WITNESS_LOCK(&m->mtx_object, opts | LOP_EXCLUSIVE | LOP_TRYLOCK,
file, line);
- }
return (rval);
}