net: stmmac_tc: use 64-bit arithmetic instead of 32-bit
Subsystems (4)
PATCH 1/1 net: stmmac_tc: use 64-bit arithmetic instead of 32-bit
Add suffix UL to constant 1024 in order to give the compiler complete information about the proper arithmetic to use. Notice that this constant is used in a context that expects an expression of type u64 (64 bits, unsigned) and following expressions are currently being evaluated using 32-bit arithmetic:
qopt->idleslope * 1024 * ptrqopt->hicredit * 1024 * 8qopt->locredit * 1024 * 8
Addresses-Coverity-ID: 1470246 ("Unintentional integer overflow")
Addresses-Coverity-ID: 1470248 ("Unintentional integer overflow")
Addresses-Coverity-ID: 1470249 ("Unintentional integer overflow")
--- drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c +3 -3
@@ -321,7 +321,7 @@ static int tc_setup_cbs(struct stmmac_priv *priv, speed_div = (priv->speed ==SPEED_100 ) ?100000 :1000000 ;/* Final adjustments for HW */ - value = qopt->idleslope *1024 * ptr; + value = qopt->idleslope *1024UL * ptr;do_div (value, speed_div); priv->plat->tx_queues_cfg[queue].idle_slope = value &GENMASK (31 ,0 );
@@ -329,10 +329,10 @@ static int tc_setup_cbs(struct stmmac_priv *priv,do_div (value, speed_div); priv->plat->tx_queues_cfg[queue].send_slope = value &GENMASK (31 ,0 ); - value = qopt->hicredit *1024 *8 ; + value = qopt->hicredit *1024UL *8 ; priv->plat->tx_queues_cfg[queue].high_credit = value &GENMASK (31 ,0 ); - value = qopt->locredit *1024 *8 ; + value = qopt->locredit *1024UL *8 ; priv->plat->tx_queues_cfg[queue].low_credit = value &GENMASK (31 ,0 ); ret = stmmac_config_cbs(priv, priv->hw,
Signature · 1 line
2.7.4
Quoted 6 lines · Gustavo A. R. Silva
Add suffix UL to constant 1024 in order to give the compiler complete information about the proper arithmetic to use. Notice that this constant is used in a context that expects an expression of type u64 (64 bits, unsigned) and following expressions are currently being evaluated using 32-bit arithmetic:
Quoted 9 lines
qopt->idleslope* 1024 * ptrqopt->hicredit* 1024 * 8qopt->locredit* 1024 * 8Addresses-Coverity-ID: 1470246 ("Unintentional integer overflow")
Addresses-Coverity-ID: 1470248 ("Unintentional integer overflow")
Addresses-Coverity-ID: 1470249 ("Unintentional integer overflow")Signed-off-by Gustavo A. R. Silva <[email protected]>
Thanks!
Best Regards,
Jose Miguel Abreu
From: "Gustavo A. R. Silva" <[email protected]>
Date: Mon, 2 Jul 2018 07:09:32 -0500
Quoted 6 lines
Add suffix UL to constant 1024 in order to give the compiler complete information about the proper arithmetic to use. Notice that this constant is used in a context that expects an expression of type u64 (64 bits, unsigned) and following expressions are currently being evaluated using 32-bit arithmetic:
Quoted 8 lines
qopt->idleslope* 1024 * ptrqopt->hicredit* 1024 * 8qopt->locredit* 1024 * 8Addresses-Coverity-ID: 1470246 ("Unintentional integer overflow")
Addresses-Coverity-ID: 1470248 ("Unintentional integer overflow")
Addresses-Coverity-ID: 1470249 ("Unintentional integer overflow")Signed-off-by Gustavo A. R. Silva <[email protected]>
Applied.