diff options
Diffstat (limited to 'kernel/acct.c')
| -rw-r--r-- | kernel/acct.c | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/kernel/acct.c b/kernel/acct.c index 62200d799b9b..010667ce6080 100644 --- a/kernel/acct.c +++ b/kernel/acct.c @@ -320,7 +320,7 @@ void acct_exit_ns(struct pid_namespace *ns)  }  /* - *  encode an unsigned long into a comp_t + *  encode an u64 into a comp_t   *   *  This routine has been adopted from the encode_comp_t() function in   *  the kern_acct.c file of the FreeBSD operating system. The encoding @@ -331,7 +331,7 @@ void acct_exit_ns(struct pid_namespace *ns)  #define	EXPSIZE		3			/* Base 8 (3 bit) exponent. */  #define	MAXFRACT	((1 << MANTSIZE) - 1)	/* Maximum fractional value. */ -static comp_t encode_comp_t(unsigned long value) +static comp_t encode_comp_t(u64 value)  {  	int exp, rnd; @@ -350,6 +350,8 @@ static comp_t encode_comp_t(unsigned long value)  		exp++;  	} +	if (exp > (((comp_t) ~0U) >> MANTSIZE)) +		return (comp_t) ~0U;  	/*  	 * Clean it up and polish it off.  	 */ |