Message ID | 20210417132329.6886-1-aford173@gmail.com |
---|---|
State | New |
Headers | show |
Series | net: ethernet: ravb: Fix release of refclk | expand |
On Sat, Apr 17, 2021 at 3:23 PM Adam Ford <aford173@gmail.com> wrote: > The call to clk_disable_unprepare() can happen before priv is > initialized. This means moving clk_disable_unprepare out of > out_release into a new label. > > Fixes: 8ef7adc6beb2("net: ethernet: ravb: Enable optional refclk") > Signed-off-by: Adam Ford <aford173@gmail.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Hello! On 17.04.2021 16:23, Adam Ford wrote: > The call to clk_disable_unprepare() can happen before priv is > initialized. Mhm, how's that? :-/ > This means moving clk_disable_unprepare out of > out_release into a new label. > > Fixes: 8ef7adc6beb2("net: ethernet: ravb: Enable optional refclk") > Signed-off-by: Adam Ford <aford173@gmail.com> > > diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c > index 8c84c40ab9a0..64a545c98ff2 100644 > --- a/drivers/net/ethernet/renesas/ravb_main.c > +++ b/drivers/net/ethernet/renesas/ravb_main.c [...] > @@ -2252,8 +2252,9 @@ static int ravb_probe(struct platform_device *pdev) > /* Stop PTP Clock driver */ > if (chip_id != RCAR_GEN2) > ravb_ptp_stop(ndev); > -out_release: > +out_unprepare_refclk: I'd really prefer out_disable_refclk. > clk_disable_unprepare(priv->refclk); > +out_release: > free_netdev(ndev); > > pm_runtime_put(&pdev->dev); MBR, Sergei
From: Adam Ford <aford173@gmail.com> Date: Sat, 17 Apr 2021 08:23:29 -0500 > The call to clk_disable_unprepare() can happen before priv is > initialized. This means moving clk_disable_unprepare out of > out_release into a new label. > > Fixes: 8ef7adc6beb2("net: ethernet: ravb: Enable optional refclk") > Signed-off-by: Adam Ford <aford173@gmail.com> Thjis does not apply cleanly, please rebbase and resubmit. Please fix the formatting of your Fixes tag while you are at it, thank you.
On Mon, Apr 19, 2021 at 5:45 PM David Miller <davem@davemloft.net> wrote: > > From: Adam Ford <aford173@gmail.com> > Date: Sat, 17 Apr 2021 08:23:29 -0500 > > > The call to clk_disable_unprepare() can happen before priv is > > initialized. This means moving clk_disable_unprepare out of > > out_release into a new label. > > > > Fixes: 8ef7adc6beb2("net: ethernet: ravb: Enable optional refclk") > > Signed-off-by: Adam Ford <aford173@gmail.com> > Thjis does not apply cleanly, please rebbase and resubmit. Which branch should I use as the rebase? I used net-next because that's where the bug is, but I know it changes frequently. > > Please fix the formatting of your Fixes tag while you are at it, thank you. no problem. Sorry about that adam
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 8c84c40ab9a0..64a545c98ff2 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -2173,7 +2173,7 @@ static int ravb_probe(struct platform_device *pdev) /* Set GTI value */ error = ravb_set_gti(ndev); if (error) - goto out_release; + goto out_unprepare_refclk; /* Request GTI loading */ ravb_modify(ndev, GCCR, GCCR_LTI, GCCR_LTI); @@ -2192,7 +2192,7 @@ static int ravb_probe(struct platform_device *pdev) "Cannot allocate desc base address table (size %d bytes)\n", priv->desc_bat_size); error = -ENOMEM; - goto out_release; + goto out_unprepare_refclk; } for (q = RAVB_BE; q < DBAT_ENTRY_NUM; q++) priv->desc_bat[q].die_dt = DT_EOS; @@ -2252,8 +2252,9 @@ static int ravb_probe(struct platform_device *pdev) /* Stop PTP Clock driver */ if (chip_id != RCAR_GEN2) ravb_ptp_stop(ndev); -out_release: +out_unprepare_refclk: clk_disable_unprepare(priv->refclk); +out_release: free_netdev(ndev); pm_runtime_put(&pdev->dev);
The call to clk_disable_unprepare() can happen before priv is initialized. This means moving clk_disable_unprepare out of out_release into a new label. Fixes: 8ef7adc6beb2("net: ethernet: ravb: Enable optional refclk") Signed-off-by: Adam Ford <aford173@gmail.com>