All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH -next] clk: tegra: tegra124-emc: fix missing clk_disable_unprepare() on error in emc_set_timing()
@ 2021-05-18  4:42 Yang Yingliang
  2021-06-02  7:58 ` Stephen Boyd
  0 siblings, 1 reply; 3+ messages in thread
From: Yang Yingliang @ 2021-05-18  4:42 UTC (permalink / raw)
  To: linux-kernel, linux-tegra, linux-clk; +Cc: jonathanh, thierry.reding, sboyd

After calling clk_prepare_enable(), clk_disable_unprepare() need
be called when prepare_timing_change() failed.

Fixes: 2db04f16b589 ("clk: tegra: Add EMC clock driver")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
---
 drivers/clk/tegra/clk-tegra124-emc.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/clk/tegra/clk-tegra124-emc.c b/drivers/clk/tegra/clk-tegra124-emc.c
index bdf6f4a51617..74c1d894cca8 100644
--- a/drivers/clk/tegra/clk-tegra124-emc.c
+++ b/drivers/clk/tegra/clk-tegra124-emc.c
@@ -249,8 +249,10 @@ static int emc_set_timing(struct tegra_clk_emc *tegra,
 	div = timing->parent_rate / (timing->rate / 2) - 2;
 
 	err = tegra->prepare_timing_change(emc, timing->rate);
-	if (err)
+	if (err) {
+		clk_disable_unprepare(timing->parent);
 		return err;
+	}
 
 	spin_lock_irqsave(tegra->lock, flags);
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH -next] clk: tegra: tegra124-emc: fix missing clk_disable_unprepare() on error in emc_set_timing()
  2021-05-18  4:42 [PATCH -next] clk: tegra: tegra124-emc: fix missing clk_disable_unprepare() on error in emc_set_timing() Yang Yingliang
@ 2021-06-02  7:58 ` Stephen Boyd
  2021-06-02  9:06   ` Thierry Reding
  0 siblings, 1 reply; 3+ messages in thread
From: Stephen Boyd @ 2021-06-02  7:58 UTC (permalink / raw)
  To: Yang Yingliang, linux-clk, linux-kernel, linux-tegra
  Cc: jonathanh, thierry.reding

Why does the subject have -next in it?

Quoting Yang Yingliang (2021-05-17 21:42:47)
> After calling clk_prepare_enable(), clk_disable_unprepare() need
> be called when prepare_timing_change() failed.
> 
> Fixes: 2db04f16b589 ("clk: tegra: Add EMC clock driver")

And then the Fixes tag is for a patch that was merged in v4.10?

> Reported-by: Hulk Robot <hulkci@huawei.com>
> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
> ---
>  drivers/clk/tegra/clk-tegra124-emc.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/clk/tegra/clk-tegra124-emc.c b/drivers/clk/tegra/clk-tegra124-emc.c
> index bdf6f4a51617..74c1d894cca8 100644
> --- a/drivers/clk/tegra/clk-tegra124-emc.c
> +++ b/drivers/clk/tegra/clk-tegra124-emc.c
> @@ -249,8 +249,10 @@ static int emc_set_timing(struct tegra_clk_emc *tegra,
>         div = timing->parent_rate / (timing->rate / 2) - 2;
>  
>         err = tegra->prepare_timing_change(emc, timing->rate);
> -       if (err)
> +       if (err) {
> +               clk_disable_unprepare(timing->parent);
>                 return err;
> +       }
>  
>         spin_lock_irqsave(tegra->lock, flags);
>  

Looks correct to me. I assume Thierry will pick it up for the next merge
window.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH -next] clk: tegra: tegra124-emc: fix missing clk_disable_unprepare() on error in emc_set_timing()
  2021-06-02  7:58 ` Stephen Boyd
@ 2021-06-02  9:06   ` Thierry Reding
  0 siblings, 0 replies; 3+ messages in thread
From: Thierry Reding @ 2021-06-02  9:06 UTC (permalink / raw)
  To: Stephen Boyd
  Cc: Yang Yingliang, linux-clk, linux-kernel, linux-tegra, jonathanh

[-- Attachment #1: Type: text/plain, Size: 1982 bytes --]

On Wed, Jun 02, 2021 at 12:58:07AM -0700, Stephen Boyd wrote:
> Why does the subject have -next in it?
> 
> Quoting Yang Yingliang (2021-05-17 21:42:47)
> > After calling clk_prepare_enable(), clk_disable_unprepare() need
> > be called when prepare_timing_change() failed.
> > 
> > Fixes: 2db04f16b589 ("clk: tegra: Add EMC clock driver")
> 
> And then the Fixes tag is for a patch that was merged in v4.10?

To be honest, I'm not sure it's worth backporting this. The probability
of this happening is very small and the worst that will happen is that
the parent clock may stay enabled even if it doesn't have to. However,
the parent clock for these is one of pll_p, pll_c or pll_m, all of which
are usually sourced from other peripherals.

Yes, it's nice to fix this, but I don't think it warrants a backport, so
I think I'll just drop the Fixes tag.

> > Reported-by: Hulk Robot <hulkci@huawei.com>
> > Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
> > ---
> >  drivers/clk/tegra/clk-tegra124-emc.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/clk/tegra/clk-tegra124-emc.c b/drivers/clk/tegra/clk-tegra124-emc.c
> > index bdf6f4a51617..74c1d894cca8 100644
> > --- a/drivers/clk/tegra/clk-tegra124-emc.c
> > +++ b/drivers/clk/tegra/clk-tegra124-emc.c
> > @@ -249,8 +249,10 @@ static int emc_set_timing(struct tegra_clk_emc *tegra,
> >         div = timing->parent_rate / (timing->rate / 2) - 2;
> >  
> >         err = tegra->prepare_timing_change(emc, timing->rate);
> > -       if (err)
> > +       if (err) {
> > +               clk_disable_unprepare(timing->parent);
> >                 return err;
> > +       }
> >  
> >         spin_lock_irqsave(tegra->lock, flags);
> >  
> 
> Looks correct to me. I assume Thierry will pick it up for the next merge
> window.

Yes, I can do that. I've got a couple of minor fixes queued already, so
this will fit right in.

Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-06-02  9:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-18  4:42 [PATCH -next] clk: tegra: tegra124-emc: fix missing clk_disable_unprepare() on error in emc_set_timing() Yang Yingliang
2021-06-02  7:58 ` Stephen Boyd
2021-06-02  9:06   ` Thierry Reding

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.