lkml.org 
[lkml]   [2018]   [Nov]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 029/114] net/mlx4_en: Resolve dividing by zero in 32-bit system
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

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

    [ Upstream commit 4850cf4581578216468b7b3c3d06cc5abb0a697d ]

    When doing roundup_pow_of_two for large enough number with
    bit 31, an overflow will occur and a value equal to 1 will
    be returned. In this case 1 will be subtracted from the return
    value and division by zero will be reached.

    Fixes: 31c128b66e5b ("net/mlx4_en: Choose time-stamping shift value according to HW frequency")
    Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/mellanox/mlx4/en_clock.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/ethernet/mellanox/mlx4/en_clock.c b/drivers/net/ethernet/mellanox/mlx4/en_clock.c
    index 4dccf7287f0f..52e4ed2f639d 100644
    --- a/drivers/net/ethernet/mellanox/mlx4/en_clock.c
    +++ b/drivers/net/ethernet/mellanox/mlx4/en_clock.c
    @@ -251,8 +251,11 @@ static u32 freq_to_shift(u16 freq)
    {
    u32 freq_khz = freq * 1000;
    u64 max_val_cycles = freq_khz * 1000 * MLX4_EN_WRAP_AROUND_SEC;
    + u64 tmp_rounded =
    + roundup_pow_of_two(max_val_cycles) > max_val_cycles ?
    + roundup_pow_of_two(max_val_cycles) - 1 : UINT_MAX;
    u64 max_val_cycles_rounded = is_power_of_2(max_val_cycles + 1) ?
    - max_val_cycles : roundup_pow_of_two(max_val_cycles) - 1;
    + max_val_cycles : tmp_rounded;
    /* calculate max possible multiplier in order to fit in 64bit */
    u64 max_mul = div_u64(0xffffffffffffffffULL, max_val_cycles_rounded);

    --
    2.17.1


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