forked from Minki/linux
clk: max77686: Fix clean-up in error and remove paths
This patch fixes invalid kfree() and adds missing call to clk_unregister() in error and remove paths in max77686_clk_probe(). While at it, error handling is also cleaned up. Signed-off-by: Tomasz Figa <t.figa@samsung.com> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Mike Turquette <mturquette@linaro.org>
This commit is contained in:
parent
badbc542f9
commit
d73ac4ca66
@ -163,17 +163,9 @@ static int max77686_clk_probe(struct platform_device *pdev)
|
||||
if (IS_ERR(clk)) {
|
||||
ret = PTR_ERR(clk);
|
||||
|
||||
switch (i) {
|
||||
case MAX77686_CLK_AP:
|
||||
dev_err(&pdev->dev, "Fail to register CLK_AP\n");
|
||||
goto err_clk_ap;
|
||||
case MAX77686_CLK_CP:
|
||||
dev_err(&pdev->dev, "Fail to register CLK_CP\n");
|
||||
goto err_clk_cp;
|
||||
case MAX77686_CLK_PMIC:
|
||||
dev_err(&pdev->dev, "Fail to register CLK_PMIC\n");
|
||||
goto err_clk_pmic;
|
||||
}
|
||||
dev_err(&pdev->dev, "failed to register %s\n",
|
||||
max77686_clks[i]->hw.init->name);
|
||||
goto err_clocks;
|
||||
}
|
||||
}
|
||||
|
||||
@ -181,13 +173,12 @@ static int max77686_clk_probe(struct platform_device *pdev)
|
||||
|
||||
return 0;
|
||||
|
||||
err_clk_pmic:
|
||||
clkdev_drop(max77686_clks[MAX77686_CLK_CP]->lookup);
|
||||
kfree(max77686_clks[MAX77686_CLK_CP]->hw.clk);
|
||||
err_clk_cp:
|
||||
clkdev_drop(max77686_clks[MAX77686_CLK_AP]->lookup);
|
||||
kfree(max77686_clks[MAX77686_CLK_AP]->hw.clk);
|
||||
err_clk_ap:
|
||||
err_clocks:
|
||||
for (--i; i >= 0; --i) {
|
||||
clkdev_drop(max77686_clks[i]->lookup);
|
||||
clk_unregister(max77686_clks[i]->hw.clk);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -198,7 +189,7 @@ static int max77686_clk_remove(struct platform_device *pdev)
|
||||
|
||||
for (i = 0; i < MAX77686_CLKS_NUM; i++) {
|
||||
clkdev_drop(max77686_clks[i]->lookup);
|
||||
kfree(max77686_clks[i]->hw.clk);
|
||||
clk_unregister(max77686_clks[i]->hw.clk);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user