diff options
author | dillon <dillon@FreeBSD.org> | 1999-09-27 00:21:43 +0000 |
---|---|---|
committer | dillon <dillon@FreeBSD.org> | 1999-09-27 00:21:43 +0000 |
commit | 510b76a3231122a74e1824a1c14c8871ebab2b17 (patch) | |
tree | 5288311a6c6297fc3ae075bcdad5a1e231fa767a /sys/kern/kern_lock.c | |
parent | 69d7d3a5b457b03e8a4698834c824001fe2e05e7 (diff) | |
download | FreeBSD-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.c | 7 |
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; |