lkml.org 
[lkml]   [2018]   [Nov]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 036/222] net: qla3xxx: Remove overflowing shift statement
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    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));
    }

    /*

    \
     
     \ /
      Last update: 2018-11-12 00:08    [W:5.750 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site