[alsa-devel] [PATCH] ASoC: hdac_hda: Fix unbalanced bus link refcount at probe error
Takashi Iwai
tiwai at suse.de
Fri May 31 16:38:20 CEST 2019
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.
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;
}
--
2.16.4
More information about the Alsa-devel
mailing list