Commit bd54ccc0 authored by Dan Carpenter's avatar Dan Carpenter Committed by Stephen Boyd
Browse files

clk: mediatek: fix double free in mtk_clk_register_pllfh()



The mtk_clk_register_pll_ops() currently frees the "pll" parameter.
The function has two callers, mtk_clk_register_pll() and
mtk_clk_register_pllfh().  The first one, the _pll() function relies on
the free, but for the second _pllfh() function it causes a double free
bug.

Really the frees should be done in the caller because that's where
the allocation is.

Fixes: d7964de8 ("clk: mediatek: Add new clock driver to handle FHCTL hardware")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/r/cd7fa365-28cc-4c34-ac64-6da57c98baa6@moroto.mountain


Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
parent 0d6e24b4
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -321,10 +321,8 @@ struct clk_hw *mtk_clk_register_pll_ops(struct mtk_clk_pll *pll,

	ret = clk_hw_register(NULL, &pll->hw);

	if (ret) {
		kfree(pll);
	if (ret)
		return ERR_PTR(ret);
	}

	return &pll->hw;
}
@@ -340,6 +338,8 @@ struct clk_hw *mtk_clk_register_pll(const struct mtk_pll_data *data,
		return ERR_PTR(-ENOMEM);

	hw = mtk_clk_register_pll_ops(pll, data, base, &mtk_pll_ops);
	if (IS_ERR(hw))
		kfree(pll);

	return hw;
}