Commit 865df9cb authored by Chuansheng Liu's avatar Chuansheng Liu Committed by Mark Brown

ASoC: core: fix the memory leak in case of device_add() failure

After called device_initialize(), even device_add() returns
error, we still need use the put_device() to release the reference
to call rtd_release(), which will do the free() action.
Signed-off-by: default avatarliu chuansheng <chuansheng.liu@intel.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 5db1bc18
...@@ -1255,6 +1255,8 @@ static int soc_post_component_init(struct snd_soc_card *card, ...@@ -1255,6 +1255,8 @@ static int soc_post_component_init(struct snd_soc_card *card,
INIT_LIST_HEAD(&rtd->dpcm[SNDRV_PCM_STREAM_CAPTURE].fe_clients); INIT_LIST_HEAD(&rtd->dpcm[SNDRV_PCM_STREAM_CAPTURE].fe_clients);
ret = device_add(rtd->dev); ret = device_add(rtd->dev);
if (ret < 0) { if (ret < 0) {
/* calling put_device() here to free the rtd->dev */
put_device(rtd->dev);
dev_err(card->dev, dev_err(card->dev,
"ASoC: failed to register runtime device: %d\n", ret); "ASoC: failed to register runtime device: %d\n", ret);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment