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@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;
}