net: aquantia: fix unintention integer overflow on left shift
authorColin Ian King <colin.king@canonical.com>
Fri, 25 Oct 2019 11:58:11 +0000 (12:58 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 29 Oct 2019 17:47:52 +0000 (10:47 -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: 04a1839950d9 ("net: aquantia: implement data PTP datapath")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Reviewed-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/aquantia/atlantic/aq_ptp.c

index 1b3be05..dca092f 100644 (file)
@@ -713,7 +713,7 @@ static int aq_ptp_poll(struct napi_struct *napi, int budget)
        if (work_done < budget) {
                napi_complete_done(napi, work_done);
                aq_nic->aq_hw_ops->hw_irq_enable(aq_nic->aq_hw,
-                                       1 << aq_ptp->ptp_ring_param.vec_idx);
+                                       BIT_ULL(aq_ptp->ptp_ring_param.vec_idx));
        }
 
 err_exit: