summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_lock.c
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2010-06-17 10:15:13 +0000
committeravg <avg@FreeBSD.org>2010-06-17 10:15:13 +0000
commit9f2d4c3357718975468ee4d1f2479c9dd704adfd (patch)
treeebc558d2717a297807438195c8fd3741b57ccf58 /sys/kern/subr_lock.c
parent70171ee94e167f43cca27a9c511c13d625606628 (diff)
downloadFreeBSD-src-9f2d4c3357718975468ee4d1f2479c9dd704adfd.zip
FreeBSD-src-9f2d4c3357718975468ee4d1f2479c9dd704adfd.tar.gz
lock_profile_release_lock: do not compare unsigned with zero
Found by: Coverity Prevent CID: 3660 Reviewed by: jhb MFC after: 2 weeks
Diffstat (limited to 'sys/kern/subr_lock.c')
-rw-r--r--sys/kern/subr_lock.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/subr_lock.c b/sys/kern/subr_lock.c
index bc43c9c..e09638e 100644
--- a/sys/kern/subr_lock.c
+++ b/sys/kern/subr_lock.c
@@ -598,7 +598,7 @@ lock_profile_release_lock(struct lock_object *lo)
struct lock_profile_object *l;
struct lock_prof_type *type;
struct lock_prof *lp;
- u_int64_t holdtime;
+ u_int64_t curtime, holdtime;
struct lpohead *head;
int spin;
@@ -626,9 +626,11 @@ lock_profile_release_lock(struct lock_object *lo)
lp = lock_profile_lookup(lo, spin, l->lpo_file, l->lpo_line);
if (lp == NULL)
goto release;
- holdtime = nanoseconds() - l->lpo_acqtime;
- if (holdtime < 0)
+ curtime = nanoseconds();
+ if (curtime < l->lpo_acqtime)
goto release;
+ holdtime = curtime - l->lpo_acqtime;
+
/*
* Record if the lock has been held longer now than ever
* before.
OpenPOWER on IntegriCloud