mlxsw: spectrum_trap: fix unintention integer overflow on left shift
authorColin Ian King <colin.king@canonical.com>
Thu, 2 Apr 2020 14:48:51 +0000 (15:48 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 3 Apr 2020 01:00:01 +0000 (18:00 -0700)
Shifting the integer value 1 is evaluated using 32-bit
arithmetic and then used in an expression that expects a 64-bit
value, so there is potentially an integer overflow. Fix this
by using the BIT_ULL macro to perform the shift and avoid the
overflow.

Addresses-Coverity: ("Unintentional integer overflow")
Fixes: 13f2e64b94ea ("mlxsw: spectrum_trap: Add devlink-trap policer support")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Reviewed-by: Ido Schimmel <idosch@mellanox.com>
Tested-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c

index 9096ffd89e501c5d6eb57bbf1bc20d57050a5750..fbf714d027d826408ee1370b4a5420c70dedcf4d 100644 (file)
@@ -643,7 +643,7 @@ static int mlxsw_sp_trap_policer_bs(u64 burst, u8 *p_burst_size,
 {
        int bs = fls64(burst) - 1;
 
-       if (burst != (1 << bs)) {
+       if (burst != (BIT_ULL(bs))) {
                NL_SET_ERR_MSG_MOD(extack, "Policer burst size is not power of two");
                return -EINVAL;
        }