[alsa-devel] [PATCH] ASoC: hdac_hda: Fix unbalanced bus link refcount at probe error

Ranjani Sridharan ranjani.sridharan at linux.intel.com
Fri May 31 17:31:10 CEST 2019


On Fri, 2019-05-31 at 16:38 +0200, Takashi Iwai wrote:
> The error paths in hdac_hda_codec_probe() don't take care of the bus
> link refcount properly, which leave the refcount still high.
> This patch addresses them.
Hi Takashi,

Thanks for this. But I looked into hdac_hdmi probe and we have a
similar problem there as well. 

Thanks,
Ranjani


> Fixes: 6bae5ea94989 ("ASoC: hdac_hda: add asoc extension for legacy
> HDA codec drivers")
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
> ---
> 
> A bug I found while digging for another problem :)
> 
>  sound/soc/codecs/hdac_hda.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/sound/soc/codecs/hdac_hda.c
> b/sound/soc/codecs/hdac_hda.c
> index 7d4940256914..b55deaeb1ebf 100644
> --- a/sound/soc/codecs/hdac_hda.c
> +++ b/sound/soc/codecs/hdac_hda.c
> @@ -475,8 +475,10 @@ static int hdac_hda_dev_probe(struct hdac_device
> *hdev)
>  	snd_hdac_ext_bus_link_get(hdev->bus, hlink);
>  
>  	hda_pvt = hdac_to_hda_priv(hdev);
> -	if (!hda_pvt)
> -		return -ENOMEM;
> +	if (!hda_pvt) {
> +		ret = -ENOMEM;
> +		goto error;
> +	}
>  
>  	/* ASoC specific initialization */
>  	ret = devm_snd_soc_register_component(&hdev->dev,
> @@ -484,12 +486,13 @@ static int hdac_hda_dev_probe(struct
> hdac_device *hdev)
>  					 ARRAY_SIZE(hdac_hda_dais));
>  	if (ret < 0) {
>  		dev_err(&hdev->dev, "failed to register HDA codec
> %d\n", ret);
> -		return ret;
> +		goto error;
>  	}
>  
>  	dev_set_drvdata(&hdev->dev, hda_pvt);
> -	snd_hdac_ext_bus_link_put(hdev->bus, hlink);
>  
> + error:
> +	snd_hdac_ext_bus_link_put(hdev->bus, hlink);
>  	return ret;
>  }
>  



More information about the Alsa-devel mailing list