ASoC: core: fix the memory leak in case of remove_aux_dev()
authorChuansheng Liu <chuansheng.liu@intel.com>
Tue, 25 Dec 2012 16:57:32 +0000 (00:57 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 27 Dec 2012 16:14:43 +0000 (16:14 +0000)
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>
sound/soc/soc-core.c

index f7551c1..2370063 100644 (file)
@@ -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;
        }