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

Reply via email to