2018-10-18 19:56:15

by Alan Tull

[permalink] [raw]
Subject: [PATCH] clk: fixed-rate: fix of_node_get-put imbalance

When the fixed rate clock is created by devicetree,
of_clk_add_provider is called. Add a call to
of_clk_del_provider in the remove function to balance
it out.

Signed-off-by: Alan Tull <[email protected]>
---
drivers/clk/clk-fixed-rate.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/clk/clk-fixed-rate.c b/drivers/clk/clk-fixed-rate.c
index b5c46b3f8764..6d6475c32ee5 100644
--- a/drivers/clk/clk-fixed-rate.c
+++ b/drivers/clk/clk-fixed-rate.c
@@ -200,6 +200,7 @@ static int of_fixed_clk_remove(struct platform_device *pdev)
{
struct clk *clk = platform_get_drvdata(pdev);

+ of_clk_del_provider(pdev->dev.of_node);
clk_unregister_fixed_rate(clk);

return 0;
--
2.16.2



2018-10-18 20:31:20

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH] clk: fixed-rate: fix of_node_get-put imbalance

Quoting Alan Tull (2018-10-18 12:54:11)
> When the fixed rate clock is created by devicetree,
> of_clk_add_provider is called. Add a call to
> of_clk_del_provider in the remove function to balance
> it out.
>
> Signed-off-by: Alan Tull <[email protected]>
> ---

Fixes tag? I'll tack one on.

> drivers/clk/clk-fixed-rate.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/clk/clk-fixed-rate.c b/drivers/clk/clk-fixed-rate.c
> index b5c46b3f8764..6d6475c32ee5 100644
> --- a/drivers/clk/clk-fixed-rate.c
> +++ b/drivers/clk/clk-fixed-rate.c
> @@ -200,6 +200,7 @@ static int of_fixed_clk_remove(struct platform_device *pdev)
> {
> struct clk *clk = platform_get_drvdata(pdev);
>
> + of_clk_del_provider(pdev->dev.of_node);
> clk_unregister_fixed_rate(clk);
>
> return 0;

2018-10-18 20:32:45

by Alan Tull

[permalink] [raw]
Subject: Re: [PATCH] clk: fixed-rate: fix of_node_get-put imbalance

On Thu, Oct 18, 2018 at 3:22 PM Stephen Boyd <[email protected]> wrote:
>
> Quoting Alan Tull (2018-10-18 12:54:11)
> > When the fixed rate clock is created by devicetree,
> > of_clk_add_provider is called. Add a call to
> > of_clk_del_provider in the remove function to balance
> > it out.
> >
> > Signed-off-by: Alan Tull <[email protected]>
> > ---
>
> Fixes tag? I'll tack one on.

Fixes 435779fe1336 ("clk: fixed-rate: Convert into a module platform driver")

Thanks!
Alan

>
> > drivers/clk/clk-fixed-rate.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/clk/clk-fixed-rate.c b/drivers/clk/clk-fixed-rate.c
> > index b5c46b3f8764..6d6475c32ee5 100644
> > --- a/drivers/clk/clk-fixed-rate.c
> > +++ b/drivers/clk/clk-fixed-rate.c
> > @@ -200,6 +200,7 @@ static int of_fixed_clk_remove(struct platform_device *pdev)
> > {
> > struct clk *clk = platform_get_drvdata(pdev);
> >
> > + of_clk_del_provider(pdev->dev.of_node);
> > clk_unregister_fixed_rate(clk);
> >
> > return 0;