[PATCH] ALSA: hda: release resource when snd_hdac_device_init is failed
Kai Vehmanen
kai.vehmanen at linux.intel.com
Wed Sep 2 17:42:29 CEST 2020
From: Rander Wang <rander.wang at intel.com>
When snd_hdac_device_init is failed, the codec is released by kfree
immediately without releasing some resources. The vendor_name should
be free if the memory is allocated and the runtime pm status should
be restored, especially the runtime pm status of parent device.
Signed-off-by: Rander Wang <rander.wang at intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan at linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao at linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski at linux.intel.com>
Signed-off-by: Kai Vehmanen <kai.vehmanen at linux.intel.com>
---
sound/hda/hdac_device.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/sound/hda/hdac_device.c b/sound/hda/hdac_device.c
index 3e9e9ac804f6..8d9d37225701 100644
--- a/sound/hda/hdac_device.c
+++ b/sound/hda/hdac_device.c
@@ -109,12 +109,16 @@ int snd_hdac_device_init(struct hdac_device *codec, struct hdac_bus *bus,
codec->vendor_id & 0xffff);
if (!codec->chip_name) {
err = -ENOMEM;
- goto error;
+ goto error_chip;
}
return 0;
+ error_chip:
+ kfree(codec->vendor_name);
error:
+ pm_runtime_put_noidle(&codec->dev);
+ pm_runtime_set_suspended(&codec->dev);
put_device(&codec->dev);
return err;
}
--
2.27.0
More information about the Alsa-devel
mailing list