ASoC: Fix resource reclaim for osk5912
In current implementation, there are resources leak in the error path. This patch properly reclaims the allocated resources in the error path. Also adds a missing clk_put in osk_soc_exit. Signed-off-by: Axel Lin <axel.lin@gmail.com> Acked-by: Jarkko Nikula <jhnikula@gmail.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
fe99b55994
commit
25436180ee
|
@ -177,7 +177,8 @@ static int __init osk_soc_init(void)
|
|||
tlv320aic23_mclk = clk_get(dev, "mclk");
|
||||
if (IS_ERR(tlv320aic23_mclk)) {
|
||||
printk(KERN_ERR "Could not get mclk clock\n");
|
||||
return -ENODEV;
|
||||
err = PTR_ERR(tlv320aic23_mclk);
|
||||
goto err2;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -188,7 +189,7 @@ static int __init osk_soc_init(void)
|
|||
if (clk_set_rate(tlv320aic23_mclk, CODEC_CLOCK)) {
|
||||
printk(KERN_ERR "Cannot set MCLK for AIC23 CODEC\n");
|
||||
err = -ECANCELED;
|
||||
goto err1;
|
||||
goto err3;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -196,9 +197,12 @@ static int __init osk_soc_init(void)
|
|||
(uint) clk_get_rate(tlv320aic23_mclk), CODEC_CLOCK);
|
||||
|
||||
return 0;
|
||||
err1:
|
||||
|
||||
err3:
|
||||
clk_put(tlv320aic23_mclk);
|
||||
err2:
|
||||
platform_device_del(osk_snd_device);
|
||||
err1:
|
||||
platform_device_put(osk_snd_device);
|
||||
|
||||
return err;
|
||||
|
@ -207,6 +211,7 @@ err1:
|
|||
|
||||
static void __exit osk_soc_exit(void)
|
||||
{
|
||||
clk_put(tlv320aic23_mclk);
|
||||
platform_device_unregister(osk_snd_device);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue