| From foo@baz Sat Nov 10 11:24:34 PST 2018 |
| From: Nathan Chancellor <natechancellor@gmail.com> |
| Date: Fri, 12 Oct 2018 19:14:58 -0700 |
| Subject: net: qla3xxx: Remove overflowing shift statement |
| |
| From: Nathan Chancellor <natechancellor@gmail.com> |
| |
| [ Upstream commit 8c3bf9b62b667456a57aefcf1689e826df146159 ] |
| |
| 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@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/qlogic/qla3xxx.c | 2 -- |
| 1 file changed, 2 deletions(-) |
| |
| --- a/drivers/net/ethernet/qlogic/qla3xxx.c |
| +++ b/drivers/net/ethernet/qlogic/qla3xxx.c |
| @@ -380,8 +380,6 @@ static void fm93c56a_select(struct ql3_a |
| |
| qdev->eeprom_cmd_data = AUBURN_EEPROM_CS_1; |
| ql_write_nvram_reg(qdev, spir, ISP_NVRAM_MASK | qdev->eeprom_cmd_data); |
| - ql_write_nvram_reg(qdev, spir, |
| - ((ISP_NVRAM_MASK << 16) | qdev->eeprom_cmd_data)); |
| } |
| |
| /* |