mirror of https://gitee.com/openkylin/linux.git
soc: rockchip: power-domain: use pm_genpd_remove in error cleanup
The newly introduced pm_genpd_remove reverts the initialization done by pm_genpd_init and is necessary in the error path of the rockchip power-domain driver. Without it the driver will in the error case cleanup the devm-allocated structures including the elements referenced in the gpd_list thus making deactivation of unused domains (and probably later genpd accesses as well) fail by accessing invalid pointers. Signed-off-by: Heiko Stuebner <heiko@sntech.de>
This commit is contained in:
parent
e4c8cd82d5
commit
79d12b7a7f
|
@ -479,7 +479,16 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
|
|||
|
||||
static void rockchip_pm_remove_one_domain(struct rockchip_pm_domain *pd)
|
||||
{
|
||||
int i;
|
||||
int i, ret;
|
||||
|
||||
/*
|
||||
* We're in the error cleanup already, so we only complain,
|
||||
* but won't emit another error on top of the original one.
|
||||
*/
|
||||
ret = pm_genpd_remove(&pd->genpd);
|
||||
if (ret < 0)
|
||||
dev_err(pd->pmu->dev, "failed to remove domain '%s' : %d - state may be inconsistent\n",
|
||||
pd->genpd.name, ret);
|
||||
|
||||
for (i = 0; i < pd->num_clks; i++) {
|
||||
clk_unprepare(pd->clks[i]);
|
||||
|
|
Loading…
Reference in New Issue