[alsa-devel] [PATCH] ASoC: Fix error paths in N810 machine driver init and release clocks at exit
Thanks to Felipe Balbi felipe.balbi@nokia.com by noticing that if clk_get to sys_clkout2_src fails, then n810_snd_device is never released.
Add also sys_clkout2_src release into error path, error code return and release the clocks at exit.
Signed-off-by: Jarkko Nikula jarkko.nikula@nokia.com --- sound/soc/omap/n810.c | 18 +++++++++++++----- 1 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/sound/soc/omap/n810.c b/sound/soc/omap/n810.c index 7694621..87d0ed0 100644 --- a/sound/soc/omap/n810.c +++ b/sound/soc/omap/n810.c @@ -329,12 +329,14 @@ static int __init n810_soc_init(void) sys_clkout2_src = clk_get(dev, "sys_clkout2_src"); if (IS_ERR(sys_clkout2_src)) { dev_err(dev, "Could not get sys_clkout2_src clock\n"); - return -ENODEV; + err = PTR_ERR(sys_clkout2_src); + goto err2; } sys_clkout2 = clk_get(dev, "sys_clkout2"); if (IS_ERR(sys_clkout2)) { dev_err(dev, "Could not get sys_clkout2\n"); - goto err1; + err = PTR_ERR(sys_clkout2); + goto err3; } /* * Configure 12 MHz output on SYS_CLKOUT2. Therefore we must use @@ -343,7 +345,8 @@ static int __init n810_soc_init(void) func96m_clk = clk_get(dev, "func_96m_ck"); if (IS_ERR(func96m_clk)) { dev_err(dev, "Could not get func 96M clock\n"); - goto err2; + err = PTR_ERR(func96m_clk); + goto err4; } clk_set_parent(sys_clkout2_src, func96m_clk); clk_set_rate(sys_clkout2, 12000000); @@ -356,20 +359,25 @@ static int __init n810_soc_init(void) gpio_direction_output(N810_SPEAKER_AMP_GPIO, 0);
return 0; -err2: +err4: clk_put(sys_clkout2); +err3: + clk_put(sys_clkout2_src); +err2: platform_device_del(n810_snd_device); err1: platform_device_put(n810_snd_device);
return err; - }
static void __exit n810_soc_exit(void) { gpio_free(N810_SPEAKER_AMP_GPIO); gpio_free(N810_HEADSET_AMP_GPIO); + clk_put(sys_clkout2_src); + clk_put(sys_clkout2); + clk_put(func96m_clk);
platform_device_unregister(n810_snd_device); }
On Tue, Aug 26, 2008 at 01:32:57PM +0300, Jarkko Nikula wrote:
Thanks to Felipe Balbi felipe.balbi@nokia.com by noticing that if clk_get to sys_clkout2_src fails, then n810_snd_device is never released.
Add also sys_clkout2_src release into error path, error code return and release the clocks at exit.
Signed-off-by: Jarkko Nikula jarkko.nikula@nokia.com
Acked-by: Mark Brown broonie@opensource.wolfsonmicro.com
At Tue, 26 Aug 2008 11:35:43 +0100, Mark Brown wrote:
On Tue, Aug 26, 2008 at 01:32:57PM +0300, Jarkko Nikula wrote:
Thanks to Felipe Balbi felipe.balbi@nokia.com by noticing that if clk_get to sys_clkout2_src fails, then n810_snd_device is never released.
Add also sys_clkout2_src release into error path, error code return and release the clocks at exit.
Signed-off-by: Jarkko Nikula jarkko.nikula@nokia.com
Acked-by: Mark Brown broonie@opensource.wolfsonmicro.com
Thanks, applied. Will be included in the next pull request.
Takashi
participants (3)
-
Jarkko Nikula
-
Mark Brown
-
Takashi Iwai