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:
parent
c961faca8c
commit
72de1b3709
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=172023
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user