summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuansheng Liu <chuansheng.liu@intel.com>2012-12-25 17:57:32 +0100
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-12-27 17:14:43 +0100
commitd3bf1561253383a3dbcc40afdb2b039d56093a3e (patch)
tree697ee9b31a828ea02ff3d93e93e9c876bb802633
parentASoC: core: fix the memory leak in case of device_add() failure (diff)
downloadlinux-d3bf1561253383a3dbcc40afdb2b039d56093a3e.tar.xz
linux-d3bf1561253383a3dbcc40afdb2b039d56093a3e.zip
ASoC: core: fix the memory leak in case of remove_aux_dev()
When probing aux_dev, initializing is as below: device_initialize() device_add() So when remove aux_dev, we need do as below: device_del() device_put() Otherwise, the rtd_release() will not be called. So here using device_unregister() to replace device_del(), like the action in soc_remove_link_dais(). Signed-off-by: liu chuansheng <chuansheng.liu@intel.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--sound/soc/soc-core.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index f7551c1c827c..2370063b5824 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1556,7 +1556,7 @@ static void soc_remove_aux_dev(struct snd_soc_card *card, int num)
/* unregister the rtd device */
if (rtd->dev_registered) {
device_remove_file(rtd->dev, &dev_attr_codec_reg);
- device_del(rtd->dev);
+ device_unregister(rtd->dev);
rtd->dev_registered = 0;
}