2024-03-07 13:20:46

by Daniil Dulov

[permalink] [raw]
Subject: [PATCH] net: phy: mdio-bcm-unimac: Cast denominator to unsigned long to avoid overflow

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 <[email protected]>
---
drivers/net/mdio/mdio-bcm-unimac.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

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;
--
2.25.1



2024-03-07 20:21:49

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH] net: phy: mdio-bcm-unimac: Cast denominator to unsigned long to avoid overflow



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 <[email protected]>

Acked-by: Florian Fainelli <[email protected]>
--
Florian


Attachments:
smime.p7s (4.12 kB)
S/MIME Cryptographic Signature

2024-03-09 03:52:30

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [PATCH] net: phy: mdio-bcm-unimac: Cast denominator to unsigned long to avoid overflow

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.
--
pw-bot: cr