Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] Missing `reset_control_put()` in `rockchip_pm_remove_one_domain()` leaks reset controls on probe failure. --
--- Patch [3]: [RFC PATCH 3/9] pmdomain/rockchip: cycle optional power-domain resets on power-on --- commit dbabfedb9da6564f3dfbd42512d2a456cfb08c18 Author: Jiaxing Hu <[email protected]> pmdomain/rockchip: cycle optional power-domain resets on power-on This commit adds optional reset line handling to the Rockchip power domain driver. It explicitly asserts and deasserts the reset lines during domain power-on to ensure hardware bus interfaces are correctly initialized. > diff --git a/drivers/pmdomain/rockchip/pm-domains.c > b/drivers/pmdomain/rockchip/pm-domains.c > --- a/drivers/pmdomain/rockchip/pm-domains.c > +++ b/drivers/pmdomain/rockchip/pm-domains.c [ ... ] > @@ -840,6 +848,14 @@ static int rockchip_pm_add_one_domain(struct > rockchip_pmu *pmu, > if (error) > goto err_put_clocks; > > + pd->resets = of_reset_control_array_get_optional_exclusive(node); > + if (IS_ERR(pd->resets)) { > + error = PTR_ERR(pd->resets); > + dev_err(pmu->dev, "%pOFn: failed to get resets: %d\n", node, > error); > + pd->resets = NULL; > + goto err_unprepare_clocks; > + } > + [Severity: Medium] Since pd->resets is acquired here using a non-managed function, does it need to be released in rockchip_pm_remove_one_domain()? If a subsequent domain fails to probe, the error path tears down all successfully added domains via rockchip_pm_remove_one_domain(). It looks like that function destroys the domain and releases its clocks, but might miss cleaning up these reset controls: static void rockchip_pm_remove_one_domain(struct rockchip_pm_domain *pd) { ... clk_bulk_unprepare(pd->num_clks, pd->clks); clk_bulk_put(pd->num_clks, pd->clks); /* pd->resets does not appear to be freed here */ ... } Would calling reset_control_put(pd->resets) in the removal path prevent a resource leak here? -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=3
