Re: [PATCH] net: qla3xxx: Remove overflowing shift statement

From: David Miller
Date: Thu Oct 18 2018 - 00:53:26 EST


From: Nathan Chancellor <natechancellor@xxxxxxxxx>
Date: Fri, 12 Oct 2018 19:14:58 -0700

> Clang currently warns:
>
> drivers/net/ethernet/qlogic/qla3xxx.c:384:24: warning: signed shift
> result (0xF00000000) requires 37 bits to represent, but 'int' only has
> 32 bits [-Wshift-overflow]
> ((ISP_NVRAM_MASK << 16) | qdev->eeprom_cmd_data));
> ~~~~~~~~~~~~~~ ^ ~~
> 1 warning generated.
>
> The warning is certainly accurate since ISP_NVRAM_MASK is defined as
> (0x000F << 16) which is then shifted by 16, resulting in 64424509440,
> well above UINT_MAX.
>
> Given that this is the only location in this driver where ISP_NVRAM_MASK
> is shifted again, it seems likely that ISP_NVRAM_MASK was originally
> defined without a shift and during the move of the shift to the
> definition, this statement wasn't properly removed (since ISP_NVRAM_MASK
> is used in the statenent right above this). Only the maintainers can
> confirm this since this statment has been here since the driver was
> first added to the kernel.
>
> Link: https://github.com/ClangBuiltLinux/linux/issues/127
> Signed-off-by: Nathan Chancellor <natechancellor@xxxxxxxxx>

If the qlogic/cavium folks aren't even going to look at and comment
on this, that is not fair to you and your change.

Applied, thanks Nathan.