diff options
author | kmacy <kmacy@FreeBSD.org> | 2006-12-04 22:15:50 +0000 |
---|---|---|
committer | kmacy <kmacy@FreeBSD.org> | 2006-12-04 22:15:50 +0000 |
commit | ff9c89ea112656bad19d3fdda0f118752731a4df (patch) | |
tree | 346da6820b603b6b7e99242acfa1e724f7ff4406 /sys | |
parent | 865070817bf9de518246db766b412ba84b3aeec3 (diff) | |
download | FreeBSD-src-ff9c89ea112656bad19d3fdda0f118752731a4df.zip FreeBSD-src-ff9c89ea112656bad19d3fdda0f118752731a4df.tar.gz |
Bug fix for obscenely large wait times on uncontested locks
if waittime was zero (the lock was uncontested) l->lpo_waittime
in the hash table would not get initialized.
Inspection prompted by questions from: Attilio Rao
Diffstat (limited to 'sys')
-rw-r--r-- | sys/kern/subr_lock.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/kern/subr_lock.c b/sys/kern/subr_lock.c index adf5e59..f55c85c 100644 --- a/sys/kern/subr_lock.c +++ b/sys/kern/subr_lock.c @@ -260,10 +260,10 @@ st char *file, int line) l->lpo_filename = file; l->lpo_lineno = line; l->lpo_acqtime = nanoseconds(); - if (waittime) { - if (l->lpo_acqtime > waittime) - l->lpo_waittime = l->lpo_acqtime - waittime; - } + if (waittime && (l->lpo_acqtime > waittime)) + l->lpo_waittime = l->lpo_acqtime - waittime; + else + l->lpo_waittime = 0; } } |