diff options
Diffstat (limited to 'include/linux/kernel.h')
| -rw-r--r-- | include/linux/kernel.h | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index d140e8fb075..c566927efcb 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -77,13 +77,15 @@  /*   * Divide positive or negative dividend by positive divisor and round - * to closest integer. Result is undefined for negative divisors. + * to closest integer. Result is undefined for negative divisors and + * for negative dividends if the divisor variable type is unsigned.   */  #define DIV_ROUND_CLOSEST(x, divisor)(			\  {							\  	typeof(x) __x = x;				\  	typeof(divisor) __d = divisor;			\ -	(((typeof(x))-1) > 0 || (__x) > 0) ?		\ +	(((typeof(x))-1) > 0 ||				\ +	 ((typeof(divisor))-1) > 0 || (__x) > 0) ?	\  		(((__x) + ((__d) / 2)) / (__d)) :	\  		(((__x) - ((__d) / 2)) / (__d));	\  }							\  |