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

Commit b1271993 authored by Jeffy Chen's avatar Jeffy Chen Committed by Heiko Stuebner
Browse files

soc: rockchip: power-domain: Add a sanity check on pd->num_clks



The of_count_phandle_with_args() can fail and return error(for example,
rk3399 pd_vio doesn't have clocks). That would break the pd probe.

Add a sanity check on pd->num_clks to avoid that.

Fixes: 65084121d59d ("soc: rockchip: power-domain: use clk_bulk APIs")
Reported-by: default avatarShawn Lin <shawn.lin@rock-chips.com>
Signed-off-by: default avatarJeffy Chen <jeffy.chen@rock-chips.com>
Tested-by: default avatarShawn Lin <shawn.lin@rock-chips.com>
Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
parent d909072d
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -402,11 +402,16 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,

	pd->num_clks = of_count_phandle_with_args(node, "clocks",
						  "#clock-cells");

	pd->clks = devm_kcalloc(pmu->dev, pd->num_clks, sizeof(*pd->clks),
				GFP_KERNEL);
	if (pd->num_clks > 0) {
		pd->clks = devm_kcalloc(pmu->dev, pd->num_clks,
					sizeof(*pd->clks), GFP_KERNEL);
		if (!pd->clks)
			return -ENOMEM;
	} else {
		dev_dbg(pmu->dev, "%s: doesn't have clocks: %d\n",
			node->name, pd->num_clks);
		pd->num_clks = 0;
	}

	for (i = 0; i < pd->num_clks; i++) {
		pd->clks[i].clk = of_clk_get(node, i);