summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_lock.c
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>1999-09-27 00:21:43 +0000
committerdillon <dillon@FreeBSD.org>1999-09-27 00:21:43 +0000
commit510b76a3231122a74e1824a1c14c8871ebab2b17 (patch)
tree5288311a6c6297fc3ae075bcdad5a1e231fa767a /sys/kern/kern_lock.c
parent69d7d3a5b457b03e8a4698834c824001fe2e05e7 (diff)
downloadFreeBSD-src-510b76a3231122a74e1824a1c14c8871ebab2b17.zip
FreeBSD-src-510b76a3231122a74e1824a1c14c8871ebab2b17.tar.gz
Fix process p_locks accounting. Conversions of the owner to LK_KERNPROC
caused p_locks to be improperly accounted. Submitted by: Tor.Egge@fast.no
Diffstat (limited to 'sys/kern/kern_lock.c')
-rw-r--r--sys/kern/kern_lock.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/kern/kern_lock.c b/sys/kern/kern_lock.c
index 2b2dfeb..2b4cef1 100644
--- a/sys/kern/kern_lock.c
+++ b/sys/kern/kern_lock.c
@@ -387,12 +387,15 @@ debuglockmgr(lkp, flags, interlkp, p, name, file, line)
if (lkp->lk_exclusivecount != 0) {
#if !defined(MAX_PERF)
if (lkp->lk_lockholder != pid &&
- lkp->lk_lockholder != LK_KERNPROC)
+ lkp->lk_lockholder != LK_KERNPROC) {
panic("lockmgr: pid %d, not %s %d unlocking",
pid, "exclusive lock holder",
lkp->lk_lockholder);
+ }
#endif
- COUNT(p, -1);
+ if (lkp->lk_lockholder != LK_KERNPROC) {
+ COUNT(p, -1);
+ }
if (lkp->lk_exclusivecount == 1) {
lkp->lk_flags &= ~LK_HAVE_EXCL;
lkp->lk_lockholder = LK_NOPROC;
OpenPOWER on IntegriCloud