summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_lock.c
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2009-03-14 11:43:02 +0000
committerjeff <jeff@FreeBSD.org>2009-03-14 11:43:02 +0000
commit4e3c0111d81b6722d70d89145f0a477afbe2d0fc (patch)
treeba632b2f7e96c8e0f9822a6c4540e1d945242699 /sys/kern/kern_lock.c
parent96eaa9ff52409f0ad3651fdcae4178f5e236ffe9 (diff)
downloadFreeBSD-src-4e3c0111d81b6722d70d89145f0a477afbe2d0fc.zip
FreeBSD-src-4e3c0111d81b6722d70d89145f0a477afbe2d0fc.tar.gz
- Call lock_profile_release when we're transitioning a lock to be owned by
LK_KERNPROC. Discussed with: attilio
Diffstat (limited to 'sys/kern/kern_lock.c')
-rw-r--r--sys/kern/kern_lock.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/kern/kern_lock.c b/sys/kern/kern_lock.c
index b2294f8..d3b9ed8 100644
--- a/sys/kern/kern_lock.c
+++ b/sys/kern/kern_lock.c
@@ -686,7 +686,8 @@ __lockmgr_args(struct lock *lk, u_int flags, struct lock_object *ilk,
lk->lk_recurse--;
break;
}
- lock_profile_release_lock(&lk->lock_object);
+ if (tid != LK_KERNPROC)
+ lock_profile_release_lock(&lk->lock_object);
if (atomic_cmpset_rel_ptr(&lk->lk_lock, tid,
LK_UNLOCKED))
@@ -874,6 +875,7 @@ _lockmgr_disown(struct lock *lk, const char *file, int line)
*/
if (LK_HOLDER(lk->lk_lock) != tid)
return;
+ lock_profile_release_lock(&lk->lock_object);
LOCK_LOG_LOCK("XDISOWN", &lk->lock_object, 0, 0, file, line);
WITNESS_UNLOCK(&lk->lock_object, LOP_EXCLUSIVE, file, line);
TD_LOCKS_DEC(curthread);
OpenPOWER on IntegriCloud