[PATCH 07/18] clk: imx: pll14xx: potential integer overflow eliminated by casting to u64

Peng Fan (OSS) posted 18 patches 1 year, 7 months ago
There is a newer version of this series
[PATCH 07/18] clk: imx: pll14xx: potential integer overflow eliminated by casting to u64
Posted by Peng Fan (OSS) 1 year, 7 months ago
From: Florin Pavelescu <florin.pavelescu@nxp.com>

Cast to u64, so that multiplications and additions will be done
in 64-bit arithmetic (and the results will also be 64-bit)
and the possibility of integer overflow is eliminated.

Fix Unintentional integer overflow reported by Coverity

Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
Signed-off-by: Florin Pavelescu <florin.pavelescu@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/clk/imx/clk-pll14xx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/imx/clk-pll14xx.c b/drivers/clk/imx/clk-pll14xx.c
index 6b2c849f8b71..78eedb1f4a79 100644
--- a/drivers/clk/imx/clk-pll14xx.c
+++ b/drivers/clk/imx/clk-pll14xx.c
@@ -118,7 +118,7 @@ static long pll14xx_calc_rate(struct clk_pll14xx *pll, int mdiv, int pdiv,
 	u64 fout = prate;
 
 	/* fout = (m * 65536 + k) * Fin / (p * 65536) / (1 << sdiv) */
-	fout *= (mdiv * 65536 + kdiv);
+	fout *= ((u64)mdiv * 65536 + (u64)kdiv);
 	pdiv *= 65536;
 
 	do_div(fout, pdiv << sdiv);

-- 
2.37.1
Re: [PATCH 07/18] clk: imx: pll14xx: potential integer overflow eliminated by casting to u64
Posted by Francesco Dolcini 1 year, 7 months ago
Hello Peng,

On Sat, May 04, 2024 at 08:49:00AM +0800, Peng Fan (OSS) wrote:
> From: Florin Pavelescu <florin.pavelescu@nxp.com>
> 
> Cast to u64, so that multiplications and additions will be done
> in 64-bit arithmetic (and the results will also be 64-bit)
> and the possibility of integer overflow is eliminated.
> 
> Fix Unintentional integer overflow reported by Coverity

Fixes tag if this is a fix?

It would be interesting in general if this can be trigger in real life
and with which side effects or if we are just silencing the tool