diff mbox series

net: phy: mdio-bcm-unimac: Cast denominator to unsigned long to avoid overflow

Message ID 20240307131947.13133-1-d.dulov@aladdin.ru (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series net: phy: mdio-bcm-unimac: Cast denominator to unsigned long to avoid overflow | expand

Checks

Context Check Description
netdev/tree_selection success Guessing tree name failed - patch did not apply

Commit Message

Daniil Dulov March 7, 2024, 1:19 p.m. UTC
The expression priv->clk_freq * 2 can lead to overflow that will cause
a division by zero. So, let's cast it to unsigned long to avoid it.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: b78ac6ecd1b6 ("net: phy: mdio-bcm-unimac: Allow configuring MDIO clock divider")
Signed-off-by: Daniil Dulov <d.dulov@aladdin.ru>
---
 drivers/net/mdio/mdio-bcm-unimac.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Florian Fainelli March 7, 2024, 8:21 p.m. UTC | #1
On 3/7/2024 5:19 AM, Daniil Dulov wrote:
> The expression priv->clk_freq * 2 can lead to overflow that will cause
> a division by zero. So, let's cast it to unsigned long to avoid it.

It will not in real life because the maximum clock frequency is 250MHz, 
but it also does not hurt.

> 
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
> 
> Fixes: b78ac6ecd1b6 ("net: phy: mdio-bcm-unimac: Allow configuring MDIO clock divider")
> Signed-off-by: Daniil Dulov <d.dulov@aladdin.ru>

Acked-by: Florian Fainelli <florian.fainelli@broadcom.com>
Jakub Kicinski March 9, 2024, 3:52 a.m. UTC | #2
On Thu, 7 Mar 2024 12:21:26 -0800 Florian Fainelli wrote:
> On 3/7/2024 5:19 AM, Daniil Dulov wrote:
> > The expression priv->clk_freq * 2 can lead to overflow that will cause
> > a division by zero. So, let's cast it to unsigned long to avoid it.  
> 
> It will not in real life because the maximum clock frequency is 250MHz, 
> but it also does not hurt.

If that's the case - Daniil, could you respin against net-next without
the Fixes tag? Otherwise it'll cause a conflict, if it's not a real
issue no point creating an extra hassle.
diff mbox series

Patch

diff --git a/drivers/net/mdio/mdio-bcm-unimac.c b/drivers/net/mdio/mdio-bcm-unimac.c
index 68f8ee0ec8ba..055102e6bb6d 100644
--- a/drivers/net/mdio/mdio-bcm-unimac.c
+++ b/drivers/net/mdio/mdio-bcm-unimac.c
@@ -192,7 +192,7 @@  static void unimac_mdio_clk_set(struct unimac_mdio_priv *priv)
 	else
 		rate = clk_get_rate(priv->clk);
 
-	div = (rate / (2 * priv->clk_freq)) - 1;
+	div = (rate / (2 * (unsigned long)priv->clk_freq)) - 1;
 	if (div & ~MDIO_CLK_DIV_MASK) {
 		pr_warn("Incorrect MDIO clock frequency, ignoring\n");
 		return;