[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