fbdev: sh_mobile_hdmi: add new label for sound error path
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Thu, 9 Sep 2010 02:48:20 +0000 (11:48 +0900)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 10 Sep 2010 15:07:41 +0000 (16:07 +0100)
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>
drivers/video/sh_mobile_hdmi.c

index a2cb492..ef989d9 100644 (file)
@@ -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;