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 |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Guessing tree name failed - patch did not apply |
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>
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 --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;
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(-)