drivers/clk/clk-rk808.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
The driver reuses the OF node of the parent multi-function device but
fails to take another reference to balance the one dropped by the
platform bus code when unbinding the MFD and deregistering the child
devices.
Fix this by using the intended helper for reusing OF nodes.
Fixes: 2dc51ca822e4 ("clk: RK808: Reduce 'struct rk808' usage")
Cc: stable@vger.kernel.org # 6.5
Cc: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/clk/clk-rk808.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/clk/clk-rk808.c b/drivers/clk/clk-rk808.c
index f7412b137e5e..5a75b5c91555 100644
--- a/drivers/clk/clk-rk808.c
+++ b/drivers/clk/clk-rk808.c
@@ -153,7 +153,7 @@ static int rk808_clkout_probe(struct platform_device *pdev)
struct rk808_clkout *rk808_clkout;
int ret;
- dev->of_node = pdev->dev.parent->of_node;
+ device_set_of_node_from_dev(dev, dev->parent);
rk808_clkout = devm_kzalloc(dev,
sizeof(*rk808_clkout), GFP_KERNEL);
--
2.52.0
Quoting Johan Hovold (2026-04-07 02:50:27)
> The driver reuses the OF node of the parent multi-function device but
> fails to take another reference to balance the one dropped by the
> platform bus code when unbinding the MFD and deregistering the child
> devices.
>
> Fix this by using the intended helper for reusing OF nodes.
>
> Fixes: 2dc51ca822e4 ("clk: RK808: Reduce 'struct rk808' usage")
> Cc: stable@vger.kernel.org # 6.5
> Cc: Sebastian Reichel <sebastian.reichel@collabora.com>
> Signed-off-by: Johan Hovold <johan@kernel.org>
> ---
Applied to clk-fixes
Quoting Johan Hovold (2026-04-07 02:50:27)
> The driver reuses the OF node of the parent multi-function device but
> fails to take another reference to balance the one dropped by the
> platform bus code when unbinding the MFD and deregistering the child
> devices.
>
> Fix this by using the intended helper for reusing OF nodes.
>
> Fixes: 2dc51ca822e4 ("clk: RK808: Reduce 'struct rk808' usage")
> Cc: stable@vger.kernel.org # 6.5
> Cc: Sebastian Reichel <sebastian.reichel@collabora.com>
> Signed-off-by: Johan Hovold <johan@kernel.org>
> ---
+Heiko
> drivers/clk/clk-rk808.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/clk/clk-rk808.c b/drivers/clk/clk-rk808.c
> index f7412b137e5e..5a75b5c91555 100644
> --- a/drivers/clk/clk-rk808.c
> +++ b/drivers/clk/clk-rk808.c
> @@ -153,7 +153,7 @@ static int rk808_clkout_probe(struct platform_device *pdev)
> struct rk808_clkout *rk808_clkout;
> int ret;
>
> - dev->of_node = pdev->dev.parent->of_node;
> + device_set_of_node_from_dev(dev, dev->parent);
>
> rk808_clkout = devm_kzalloc(dev,
> sizeof(*rk808_clkout), GFP_KERNEL);
> --
> 2.52.0
>
Am Samstag, 25. April 2026, 20:10:27 Mitteleuropäische Sommerzeit schrieb Stephen Boyd:
> Quoting Johan Hovold (2026-04-07 02:50:27)
> > The driver reuses the OF node of the parent multi-function device but
> > fails to take another reference to balance the one dropped by the
> > platform bus code when unbinding the MFD and deregistering the child
> > devices.
> >
> > Fix this by using the intended helper for reusing OF nodes.
> >
> > Fixes: 2dc51ca822e4 ("clk: RK808: Reduce 'struct rk808' usage")
> > Cc: stable@vger.kernel.org # 6.5
> > Cc: Sebastian Reichel <sebastian.reichel@collabora.com>
> > Signed-off-by: Johan Hovold <johan@kernel.org>
> > ---
>
> +Heiko
I've looked that up, and that is the right way to go
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
>
> > drivers/clk/clk-rk808.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/clk/clk-rk808.c b/drivers/clk/clk-rk808.c
> > index f7412b137e5e..5a75b5c91555 100644
> > --- a/drivers/clk/clk-rk808.c
> > +++ b/drivers/clk/clk-rk808.c
> > @@ -153,7 +153,7 @@ static int rk808_clkout_probe(struct platform_device *pdev)
> > struct rk808_clkout *rk808_clkout;
> > int ret;
> >
> > - dev->of_node = pdev->dev.parent->of_node;
> > + device_set_of_node_from_dev(dev, dev->parent);
> >
> > rk808_clkout = devm_kzalloc(dev,
> > sizeof(*rk808_clkout), GFP_KERNEL);
> >
>
Am Samstag, 25. April 2026, 20:10:27 Mitteleuropäische Sommerzeit schrieb Stephen Boyd:
> Quoting Johan Hovold (2026-04-07 02:50:27)
> > The driver reuses the OF node of the parent multi-function device but
> > fails to take another reference to balance the one dropped by the
> > platform bus code when unbinding the MFD and deregistering the child
> > devices.
> >
> > Fix this by using the intended helper for reusing OF nodes.
> >
> > Fixes: 2dc51ca822e4 ("clk: RK808: Reduce 'struct rk808' usage")
> > Cc: stable@vger.kernel.org # 6.5
> > Cc: Sebastian Reichel <sebastian.reichel@collabora.com>
> > Signed-off-by: Johan Hovold <johan@kernel.org>
> > ---
>
> +Heiko
Looking at the device_set_of_node_from_dev() function, this is the
right move, so
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
It also seems the rk808-regulator.c might be another candidate for
this, as it also takes the node without of_node_get and manually
setting the of_node_reused flag.
Heiko
> > drivers/clk/clk-rk808.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/clk/clk-rk808.c b/drivers/clk/clk-rk808.c
> > index f7412b137e5e..5a75b5c91555 100644
> > --- a/drivers/clk/clk-rk808.c
> > +++ b/drivers/clk/clk-rk808.c
> > @@ -153,7 +153,7 @@ static int rk808_clkout_probe(struct platform_device *pdev)
> > struct rk808_clkout *rk808_clkout;
> > int ret;
> >
> > - dev->of_node = pdev->dev.parent->of_node;
> > + device_set_of_node_from_dev(dev, dev->parent);
> >
> > rk808_clkout = devm_kzalloc(dev,
> > sizeof(*rk808_clkout), GFP_KERNEL);
> >
>
On Mon, Apr 27, 2026 at 01:17:39PM +0200, Heiko Stuebner wrote:
> Looking at the device_set_of_node_from_dev() function, this is the
> right move, so
>
> Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Thanks for reviewing.
> It also seems the rk808-regulator.c might be another candidate for
> this, as it also takes the node without of_node_get and manually
> setting the of_node_reused flag.
That's fixed in 7.1-rc1:
65290b24d8a5 ("regulator: rk808: fix OF node reference imbalance")
Johan
Am Montag, 27. April 2026, 14:03:20 Mitteleuropäische Sommerzeit schrieb Johan Hovold:
> On Mon, Apr 27, 2026 at 01:17:39PM +0200, Heiko Stuebner wrote:
>
> > Looking at the device_set_of_node_from_dev() function, this is the
> > right move, so
> >
> > Reviewed-by: Heiko Stuebner <heiko@sntech.de>
>
> Thanks for reviewing.
>
> > It also seems the rk808-regulator.c might be another candidate for
> > this, as it also takes the node without of_node_get and manually
> > setting the of_node_reused flag.
>
> That's fixed in 7.1-rc1:
>
> 65290b24d8a5 ("regulator: rk808: fix OF node reference imbalance")
nice ... should've looked there, instead of v7.0 :-)
Heiko
On Tue, Apr 07, 2026 at 11:50:27AM +0200, Johan Hovold wrote:
> The driver reuses the OF node of the parent multi-function device but
> fails to take another reference to balance the one dropped by the
> platform bus code when unbinding the MFD and deregistering the child
> devices.
>
> Fix this by using the intended helper for reusing OF nodes.
>
> Fixes: 2dc51ca822e4 ("clk: RK808: Reduce 'struct rk808' usage")
> Cc: stable@vger.kernel.org # 6.5
> Cc: Sebastian Reichel <sebastian.reichel@collabora.com>
> Signed-off-by: Johan Hovold <johan@kernel.org>
Reviewed-by: Brian Masney <bmasney@redhat.com>
Hi,
On Tue, Apr 07, 2026 at 11:50:27AM +0200, Johan Hovold wrote:
> The driver reuses the OF node of the parent multi-function device but
> fails to take another reference to balance the one dropped by the
> platform bus code when unbinding the MFD and deregistering the child
> devices.
>
> Fix this by using the intended helper for reusing OF nodes.
>
> Fixes: 2dc51ca822e4 ("clk: RK808: Reduce 'struct rk808' usage")
> Cc: stable@vger.kernel.org # 6.5
> Cc: Sebastian Reichel <sebastian.reichel@collabora.com>
> Signed-off-by: Johan Hovold <johan@kernel.org>
> ---
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Greetings,
-- Sebastian
> drivers/clk/clk-rk808.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/clk/clk-rk808.c b/drivers/clk/clk-rk808.c
> index f7412b137e5e..5a75b5c91555 100644
> --- a/drivers/clk/clk-rk808.c
> +++ b/drivers/clk/clk-rk808.c
> @@ -153,7 +153,7 @@ static int rk808_clkout_probe(struct platform_device *pdev)
> struct rk808_clkout *rk808_clkout;
> int ret;
>
> - dev->of_node = pdev->dev.parent->of_node;
> + device_set_of_node_from_dev(dev, dev->parent);
>
> rk808_clkout = devm_kzalloc(dev,
> sizeof(*rk808_clkout), GFP_KERNEL);
> --
> 2.52.0
>
© 2016 - 2026 Red Hat, Inc.