• G
    linux/kernel.h: Fix warning seen with W=1 due to change in DIV_ROUND_CLOSEST · 263a523d
    Guenter Roeck 提交于
    After commit b6d86d3d (Fix DIV_ROUND_CLOSEST to support negative dividends),
    the following warning is seen if the kernel is compiled with W=1 (-Wextra):
    
    warning: comparison of unsigned expression >= 0 is always true
    
    The warning is due to the test '((typeof(x))-1) >= 0', which is used to detect
    if the variable type is unsigned. Research on the web suggests that the warning
    disappears if '>' instead of '>=' is used for the comparison.
    
    Tests after changing the macro along that line show that the warning is gone,
    and that the result is still correct:
    
    i=-4: DIV_ROUND_CLOSEST(i, 2)=-2
    i=-3: DIV_ROUND_CLOSEST(i, 2)=-2
    i=-2: DIV_ROUND_CLOSEST(i, 2)=-1
    i=-1: DIV_ROUND_CLOSEST(i, 2)=-1
    i=0: DIV_ROUND_CLOSEST(i, 2)=0
    i=1: DIV_ROUND_CLOSEST(i, 2)=1
    i=2: DIV_ROUND_CLOSEST(i, 2)=1
    i=3: DIV_ROUND_CLOSEST(i, 2)=2
    i=4: DIV_ROUND_CLOSEST(i, 2)=2
    
    Code size is the same as before.
    Signed-off-by: NGuenter Roeck <linux@roeck-us.net>
    Tested-by: NMauro Carvalho Chehab <mchehab@redhat.com>
    Acked-by: NJean Delvare <khali@linux-fr.org>
    263a523d
kernel.h 21.5 KB