clk: mediatek: Unregister clks in mtk_clk_simple_probe() error path
authorChen-Yu Tsai <wenst@chromium.org>
Tue, 8 Feb 2022 12:40:30 +0000 (20:40 +0800)
committerStephen Boyd <sboyd@kernel.org>
Thu, 17 Feb 2022 20:12:24 +0000 (12:12 -0800)
Until now the mediatek clk driver library did not have any way to
unregister clks, and so all drivers did not do proper cleanup in
their error paths.

Now that the library does have APIs to unregister clks, use them
in the error path of mtk_clk_simple_probe() to do proper cleanup.

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Miles Chen <miles.chen@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20220208124034.414635-28-wenst@chromium.org
Reviewed-by: Chun-Jie Chen <chun-jie.chen@mediatek.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/mediatek/clk-mtk.c

index 8f15e9de742e4074b084ee05d7e6eb90ef943074..0e027be0d5fc998c8f76cfffefec326a64704059 100644 (file)
@@ -439,12 +439,14 @@ int mtk_clk_simple_probe(struct platform_device *pdev)
 
        r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
        if (r)
-               goto free_data;
+               goto unregister_clks;
 
        platform_set_drvdata(pdev, clk_data);
 
        return r;
 
+unregister_clks:
+       mtk_clk_unregister_gates(mcd->clks, mcd->num_clks, clk_data);
 free_data:
        mtk_free_clk_data(clk_data);
        return r;