Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79d12b7a authored by Heiko Stuebner's avatar Heiko Stuebner
Browse files

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: default avatarHeiko Stuebner <heiko@sntech.de>
parent e4c8cd82
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -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]);