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)
This commit is contained in:
Diomidis Spinellis 2007-08-31 13:36:58 +00:00
parent c961faca8c
commit 72de1b3709
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=172023

View File

@ -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