* [PATCH v2 0/4] Small fixes and improvement for Rockchip pm-domains driver
@ 2026-09-19 0:35 Shawn Lin
2026-09-19 0:35 ` [PATCH v2 1/4] pmdomain: rockchip: propagate subdomain add errors Shawn Lin
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Shawn Lin @ 2026-09-19 0:35 UTC (permalink / raw)
To: Ulf Hansson, Heiko Stuebner
Cc: Sebastian Reichel, linux-pm, linux-rockchip, Shawn Lin
The first 3 patches are for fixing. And the last one is for
improvement.
Changes in v2:
- switch to use devm_kzalloc()
- add Sebastian's tag
Shawn Lin (4):
pmdomain: rockchip: propagate subdomain add errors
pmdomain: rockchip: fix clock leak on domain probe failure
pmdomain: rockchip: don't ignore clock lookup errors on attach
pmdomain: rockchip: drop duplicated errno from supply failure message
drivers/pmdomain/rockchip/pm-domains.c | 24 +++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/4] pmdomain: rockchip: propagate subdomain add errors
2026-09-19 0:35 [PATCH v2 0/4] Small fixes and improvement for Rockchip pm-domains driver Shawn Lin
@ 2026-09-19 0:35 ` Shawn Lin
2026-09-19 0:35 ` [PATCH v2 2/4] pmdomain: rockchip: fix clock leak on domain probe failure Shawn Lin
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Shawn Lin @ 2026-09-19 0:35 UTC (permalink / raw)
To: Ulf Hansson, Heiko Stuebner
Cc: Sebastian Reichel, linux-pm, linux-rockchip, Shawn Lin
rockchip_pm_add_subdomain() ignored the return value of its recursive
call, so a failure deeper in the hierarchy was silently dropped and
probe still succeeded with an incomplete domain tree.
Fixes: 6be05b5ec161 ("soc: rockchip: power-domain: add support for sub-power domains")
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
Changes in v2: None
drivers/pmdomain/rockchip/pm-domains.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c
index ba66ae7..068dd4b3 100644
--- a/drivers/pmdomain/rockchip/pm-domains.c
+++ b/drivers/pmdomain/rockchip/pm-domains.c
@@ -1018,7 +1018,9 @@ static int rockchip_pm_add_subdomain(struct rockchip_pmu *pmu,
parent_domain->name, child_domain->name);
}
- rockchip_pm_add_subdomain(pmu, np);
+ error = rockchip_pm_add_subdomain(pmu, np);
+ if (error)
+ return error;
}
return 0;
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/4] pmdomain: rockchip: fix clock leak on domain probe failure
2026-09-19 0:35 [PATCH v2 0/4] Small fixes and improvement for Rockchip pm-domains driver Shawn Lin
2026-09-19 0:35 ` [PATCH v2 1/4] pmdomain: rockchip: propagate subdomain add errors Shawn Lin
@ 2026-09-19 0:35 ` Shawn Lin
2026-09-19 17:03 ` Diederik de Haas
2026-09-19 0:35 ` [PATCH v2 3/4] pmdomain: rockchip: don't ignore clock lookup errors on attach Shawn Lin
2026-09-19 0:35 ` [PATCH v2 4/4] pmdomain: rockchip: drop duplicated errno from supply failure message Shawn Lin
3 siblings, 1 reply; 6+ messages in thread
From: Shawn Lin @ 2026-09-19 0:35 UTC (permalink / raw)
To: Ulf Hansson, Heiko Stuebner
Cc: Sebastian Reichel, linux-pm, linux-rockchip, Shawn Lin
When of_clk_get() failed in the middle of the loop, the references of
the clocks acquired so far were leaked instead of being released by
the error path.
Also switch the clks array allocation from devm_kcalloc() to
devm_kzalloc() so that clk_bulk_put() cannot run over uninitialized
entries.
Fixes: d909072d0521 ("soc: rockchip: power-domain: use clk_bulk APIs")
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
Changes in v2:
- switch to use devm_kzalloc()
- add Sebastian's tag
drivers/pmdomain/rockchip/pm-domains.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c
index 068dd4b3..43fdb7f 100644
--- a/drivers/pmdomain/rockchip/pm-domains.c
+++ b/drivers/pmdomain/rockchip/pm-domains.c
@@ -825,7 +825,7 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
pd->num_clks = of_clk_get_parent_count(node);
if (pd->num_clks > 0) {
- pd->clks = devm_kcalloc(pmu->dev, pd->num_clks,
+ pd->clks = devm_kzalloc(pmu->dev, pd->num_clks,
sizeof(*pd->clks), GFP_KERNEL);
if (!pd->clks)
return -ENOMEM;
@@ -842,7 +842,7 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
dev_err(pmu->dev,
"%pOFn: failed to get clk at index %d: %d\n",
node, i, error);
- return error;
+ goto err_put_clocks;
}
}
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 3/4] pmdomain: rockchip: don't ignore clock lookup errors on attach
2026-09-19 0:35 [PATCH v2 0/4] Small fixes and improvement for Rockchip pm-domains driver Shawn Lin
2026-09-19 0:35 ` [PATCH v2 1/4] pmdomain: rockchip: propagate subdomain add errors Shawn Lin
2026-09-19 0:35 ` [PATCH v2 2/4] pmdomain: rockchip: fix clock leak on domain probe failure Shawn Lin
@ 2026-09-19 0:35 ` Shawn Lin
2026-09-19 0:35 ` [PATCH v2 4/4] pmdomain: rockchip: drop duplicated errno from supply failure message Shawn Lin
3 siblings, 0 replies; 6+ messages in thread
From: Shawn Lin @ 2026-09-19 0:35 UTC (permalink / raw)
To: Ulf Hansson, Heiko Stuebner
Cc: Sebastian Reichel, linux-pm, linux-rockchip, Shawn Lin
rockchip_pd_attach_dev() treated every of_clk_get() error as the end
of the clock list, so a clock that exists but is not available yet
(e.g. -EPROBE_DEFER) was silently skipped and the device ended up
without pm_clk management. Only -ENOENT means there are no more
clocks.
Fixes: 7c696693a4f5 ("soc: rockchip: power-domain: Add power domain driver")
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
Changes in v2: None
drivers/pmdomain/rockchip/pm-domains.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c
index 43fdb7f..9917ebf 100644
--- a/drivers/pmdomain/rockchip/pm-domains.c
+++ b/drivers/pmdomain/rockchip/pm-domains.c
@@ -759,7 +759,19 @@ static int rockchip_pd_attach_dev(struct generic_pm_domain *genpd,
}
i = 0;
- while ((clk = of_clk_get(dev->of_node, i++)) && !IS_ERR(clk)) {
+ while (1) {
+ clk = of_clk_get(dev->of_node, i++);
+ if (IS_ERR(clk)) {
+ error = PTR_ERR(clk);
+ if (error == -ENOENT)
+ break;
+
+ dev_err(dev, "failed to get clock %d: %d\n", i - 1,
+ error);
+ pm_clk_destroy(dev);
+ return error;
+ }
+
dev_dbg(dev, "adding clock '%pC' to list of PM clocks\n", clk);
error = pm_clk_add_clk(dev, clk);
if (error) {
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 4/4] pmdomain: rockchip: drop duplicated errno from supply failure message
2026-09-19 0:35 [PATCH v2 0/4] Small fixes and improvement for Rockchip pm-domains driver Shawn Lin
` (2 preceding siblings ...)
2026-09-19 0:35 ` [PATCH v2 3/4] pmdomain: rockchip: don't ignore clock lookup errors on attach Shawn Lin
@ 2026-09-19 0:35 ` Shawn Lin
3 siblings, 0 replies; 6+ messages in thread
From: Shawn Lin @ 2026-09-19 0:35 UTC (permalink / raw)
To: Ulf Hansson, Heiko Stuebner
Cc: Sebastian Reichel, linux-pm, linux-rockchip, Shawn Lin
dev_err_probe() already appends the error code.
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
Changes in v2: None
drivers/pmdomain/rockchip/pm-domains.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c
index 9917ebf..1f236e1 100644
--- a/drivers/pmdomain/rockchip/pm-domains.c
+++ b/drivers/pmdomain/rockchip/pm-domains.c
@@ -721,7 +721,7 @@ static int rockchip_pd_power_on(struct generic_pm_domain *domain)
ret = rockchip_pd_regulator_enable(pd);
if (ret)
return dev_err_probe(pd->pmu->dev, ret,
- "Failed to enable supply: %d\n", ret);
+ "Failed to enable supply\n");
ret = rockchip_pd_power(pd, true);
if (ret)
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/4] pmdomain: rockchip: fix clock leak on domain probe failure
2026-09-19 0:35 ` [PATCH v2 2/4] pmdomain: rockchip: fix clock leak on domain probe failure Shawn Lin
@ 2026-09-19 17:03 ` Diederik de Haas
0 siblings, 0 replies; 6+ messages in thread
From: Diederik de Haas @ 2026-09-19 17:03 UTC (permalink / raw)
To: Shawn Lin, Ulf Hansson, Heiko Stuebner
Cc: Sebastian Reichel, linux-pm, linux-rockchip
On Sat Sep 19, 2026 at 2:35 AM CEST, Shawn Lin wrote:
> When of_clk_get() failed in the middle of the loop, the references of
> the clocks acquired so far were leaked instead of being released by
> the error path.
>
> Also switch the clks array allocation from devm_kcalloc() to
> devm_kzalloc() so that clk_bulk_put() cannot run over uninitialized
> entries.
>
> Fixes: d909072d0521 ("soc: rockchip: power-domain: use clk_bulk APIs")
> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
> ---
>
> Changes in v2:
> - switch to use devm_kzalloc()
> - add Sebastian's tag
>
> drivers/pmdomain/rockchip/pm-domains.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c
> index 068dd4b3..43fdb7f 100644
> --- a/drivers/pmdomain/rockchip/pm-domains.c
> +++ b/drivers/pmdomain/rockchip/pm-domains.c
> @@ -825,7 +825,7 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
>
> pd->num_clks = of_clk_get_parent_count(node);
> if (pd->num_clks > 0) {
> - pd->clks = devm_kcalloc(pmu->dev, pd->num_clks,
> + pd->clks = devm_kzalloc(pmu->dev, pd->num_clks,
> sizeof(*pd->clks), GFP_KERNEL);
/media/nvme/dev/debian/salsa/kernel-team/linux/drivers/pmdomain/rockchip/pm-domains.c: In function ‘rockchip_pm_add_one_domain’:
/media/nvme/dev/debian/salsa/kernel-team/linux/drivers/pmdomain/rockchip/pm-domains.c:840:28: error: too many arguments to function ‘devm_kzalloc’; expected 3, have 4
840 | pd->clks = devm_kzalloc(pmu->dev, pd->num_clks,
| ^~~~~~~~~~~~
In file included from /media/nvme/dev/debian/salsa/kernel-team/linux/include/linux/device.h:31,
from /media/nvme/dev/debian/salsa/kernel-team/linux/include/linux/platform_device.h:13,
from /media/nvme/dev/debian/salsa/kernel-team/linux/drivers/pmdomain/rockchip/pm-domains.c:13:
/media/nvme/dev/debian/salsa/kernel-team/linux/include/linux/device/devres.h:48:21: note: declared here
48 | static inline void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp)
| ^~~~~~~~~~~~
Seems legit:
https://elixir.bootlin.com/linux/v7.3-rc3/source/include/linux/device/devres.h#L48
Cheers,
Diederik
> if (!pd->clks)
> return -ENOMEM;
> @@ -842,7 +842,7 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
> dev_err(pmu->dev,
> "%pOFn: failed to get clk at index %d: %d\n",
> node, i, error);
> - return error;
> + goto err_put_clocks;
> }
> }
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-09-19 17:03 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-19 0:35 [PATCH v2 0/4] Small fixes and improvement for Rockchip pm-domains driver Shawn Lin
2026-09-19 0:35 ` [PATCH v2 1/4] pmdomain: rockchip: propagate subdomain add errors Shawn Lin
2026-09-19 0:35 ` [PATCH v2 2/4] pmdomain: rockchip: fix clock leak on domain probe failure Shawn Lin
2026-09-19 17:03 ` Diederik de Haas
2026-09-19 0:35 ` [PATCH v2 3/4] pmdomain: rockchip: don't ignore clock lookup errors on attach Shawn Lin
2026-09-19 0:35 ` [PATCH v2 4/4] pmdomain: rockchip: drop duplicated errno from supply failure message Shawn Lin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox