Commit ec4e5ccd authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown

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: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 17731f8d
...@@ -967,7 +967,7 @@ static int __init sh_hdmi_probe(struct platform_device *pdev) ...@@ -967,7 +967,7 @@ static int __init sh_hdmi_probe(struct platform_device *pdev)
ret = snd_soc_register_codec(&pdev->dev, ret = snd_soc_register_codec(&pdev->dev,
&soc_codec_dev_sh_hdmi, &sh_hdmi_dai, 1); &soc_codec_dev_sh_hdmi, &sh_hdmi_dai, 1);
if (ret < 0) if (ret < 0)
goto egetclk; goto esndreg;
hdmi->dev = &pdev->dev; hdmi->dev = &pdev->dev;
...@@ -1054,6 +1054,8 @@ static int __init sh_hdmi_probe(struct platform_device *pdev) ...@@ -1054,6 +1054,8 @@ static int __init sh_hdmi_probe(struct platform_device *pdev)
erate: erate:
clk_put(hdmi->hdmi_clk); clk_put(hdmi->hdmi_clk);
egetclk: egetclk:
snd_soc_unregister_codec(&pdev->dev);
esndreg:
kfree(hdmi); kfree(hdmi);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment