clk: fsl-sai: fix memory leak
authorMichael Walle <michael@walle.cc>
Thu, 5 Nov 2020 19:27:44 +0000 (20:27 +0100)
committerStephen Boyd <sboyd@kernel.org>
Mon, 7 Dec 2020 22:06:16 +0000 (14:06 -0800)
If the device is removed we don't unregister the composite clock. Fix
that.

Fixes: 9cd10205227c ("clk: fsl-sai: new driver")
Signed-off-by: Michael Walle <michael@walle.cc>
Link: https://lore.kernel.org/r/20201105192746.19564-2-michael@walle.cc
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/clk-fsl-sai.c

index 0221180..1e81c8d 100644 (file)
@@ -68,9 +68,20 @@ static int fsl_sai_clk_probe(struct platform_device *pdev)
        if (IS_ERR(hw))
                return PTR_ERR(hw);
 
+       platform_set_drvdata(pdev, hw);
+
        return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, hw);
 }
 
+static int fsl_sai_clk_remove(struct platform_device *pdev)
+{
+       struct clk_hw *hw = platform_get_drvdata(pdev);
+
+       clk_hw_unregister_composite(hw);
+
+       return 0;
+}
+
 static const struct of_device_id of_fsl_sai_clk_ids[] = {
        { .compatible = "fsl,vf610-sai-clock" },
        { }
@@ -79,6 +90,7 @@ MODULE_DEVICE_TABLE(of, of_fsl_sai_clk_ids);
 
 static struct platform_driver fsl_sai_clk_driver = {
        .probe = fsl_sai_clk_probe,
+       .remove = fsl_sai_clk_remove,
        .driver         = {
                .name   = "fsl-sai-clk",
                .of_match_table = of_fsl_sai_clk_ids,