Re: [PATCH net] net: ethernet: stmmac: dwmac-rk: fix bulk clock leak when the PHY clock fails
From: Lorenzo Bianconi
Date: Sun Sep 20 2026 - 04:40:09 EST
> gmac_clk_enable() enables the bulk clocks first and then the optional
> PHY clock. If clk_prepare_enable() on the PHY clock fails, the function
> returns without rolling back the bulk clocks, and bsp_priv->clk_enabled
> stays false, so the later gmac_clk_enable(bsp_priv, false) becomes a
> no-op and the bulk clock references are leaked.
>
> Add the missing clk_bulk_disable_unprepare() on that failure path.
>
> Fixes: ea449f7fa0bf ("net: ethernet: stmmac: dwmac-rk: rework optional clock handling")
> Signed-off-by: Coia Prant <coiaprant@xxxxxxxxx>
Acked-by: Lorenzo Bianconi <lorenzo.bianconi@xxxxxxxxxxxxxxxx>
> ---
> drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> index 8d7042e689261..f3a98bd9d6ead 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> @@ -1163,7 +1163,10 @@ static int gmac_clk_enable(struct rk_priv_data *bsp_priv, bool enable)
>
> ret = clk_prepare_enable(bsp_priv->clk_phy);
> if (ret)
> + clk_bulk_disable_unprepare(bsp_priv->num_clks,
> + bsp_priv->clks);
> return ret;
> + }
>
> rk_configure_io_clksel(bsp_priv);
> rk_ungate_rmii_clock(bsp_priv);
> --
> 2.47.3
>
>
Attachment:
signature.asc
Description: PGP signature