summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_acct.c
diff options
context:
space:
mode:
authordds <dds@FreeBSD.org>2007-08-31 13:36:58 +0000
committerdds <dds@FreeBSD.org>2007-08-31 13:36:58 +0000
commit674de1aff092b740bf1f0c61a414410de0ba79a6 (patch)
tree9a326147dcf1552554cf44757b1137912e351011 /sys/kern/kern_acct.c
parentaddf8f8db2567fe99217d9e7651d1adc46e47496 (diff)
downloadFreeBSD-src-674de1aff092b740bf1f0c61a414410de0ba79a6.zip
FreeBSD-src-674de1aff092b740bf1f0c61a414410de0ba79a6.tar.gz
Don't panic. When encountering a negative value call log(LOG_NOTICE, ...)
and record LONG_MAX, instead of calling KASSERT(...). Reported by: rwatson Approved by: re (kensmith)
Diffstat (limited to 'sys/kern/kern_acct.c')
-rw-r--r--sys/kern/kern_acct.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/kern/kern_acct.c b/sys/kern/kern_acct.c
index 269b4e4..76791a8 100644
--- a/sys/kern/kern_acct.c
+++ b/sys/kern/kern_acct.c
@@ -78,6 +78,7 @@ __FBSDID("$FreeBSD$");
#include <sys/fcntl.h>
#include <sys/kernel.h>
#include <sys/kthread.h>
+#include <sys/limits.h>
#include <sys/lock.h>
#include <sys/mount.h>
#include <sys/mutex.h>
@@ -522,9 +523,14 @@ encode_long(long val)
int norm_exp; /* Normalized exponent */
int shift;
- KASSERT(val >= 0, ("encode_long: -ve value %ld", val));
if (val == 0)
return (0);
+ if (val < 0) {
+ log(LOG_NOTICE,
+ "encode_long: negative value %ld in accounting record",
+ val);
+ val = LONG_MAX;
+ }
norm_exp = fls(val) - 1;
shift = FLT_MANT_DIG - norm_exp - 1;
#ifdef ACCT_DEBUG
OpenPOWER on IntegriCloud