diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2010-09-09 04:48:20 +0200 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-09-10 17:07:41 +0200 |
commit | ec4e5ccd4b8be576f9cd8bfc3cb8651565ed87ef (patch) | |
tree | 46f591057cd699035b79dfa9cd80a088e25c2dbe /drivers/video/sh_mobile_hdmi.c | |
parent | fbdev: sh_mobile_hdmi: modify snd_soc_dai_driver settings (diff) | |
download | linux-ec4e5ccd4b8be576f9cd8bfc3cb8651565ed87ef.tar.xz linux-ec4e5ccd4b8be576f9cd8bfc3cb8651565ed87ef.zip |
fbdev: sh_mobile_hdmi: add new label for sound error path
This patch solve below report from Guennadi
> /* External video parameter settings */
> static void hdmi_external_video_param(struct sh_hdmi *hdmi)
> {
> @@ -804,6 +862,11 @@ static int __init sh_hdmi_probe(struct platform_device *pdev)
> return -ENOMEM;
> }
>
> + ret = snd_soc_register_codec(&pdev->dev,
> + &soc_codec_dev_sh_hdmi, &sh_hdmi_dai, 1);
> + if (ret < 0)
> + goto egetclk;
> +
> hdmi->dev = &pdev->dev;
>
> hdmi->hdmi_clk = clk_get(&pdev->dev, "ick");
NAK. This breaks the error path and has to be fixed. Firstly, please, use
a new label like "esndreg," secondly, you have to add
clk_disable(hdmi->hdmi_clk);
erate:
clk_put(hdmi->hdmi_clk);
egetclk:
+ snd_soc_unregister_codec(&pdev->dev);
+esndreg:
mutex_destroy(&hdmi->mutex);
kfree(hdmi);
Reported-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/video/sh_mobile_hdmi.c')
-rw-r--r-- | drivers/video/sh_mobile_hdmi.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c index a2cb49254eb2..ef989d94511c 100644 --- a/drivers/video/sh_mobile_hdmi.c +++ b/drivers/video/sh_mobile_hdmi.c @@ -967,7 +967,7 @@ static int __init sh_hdmi_probe(struct platform_device *pdev) ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_sh_hdmi, &sh_hdmi_dai, 1); if (ret < 0) - goto egetclk; + goto esndreg; hdmi->dev = &pdev->dev; @@ -1054,6 +1054,8 @@ eclkenable: erate: clk_put(hdmi->hdmi_clk); egetclk: + snd_soc_unregister_codec(&pdev->dev); +esndreg: kfree(hdmi); return ret; |