ASoC: smdk_wm9713: fix resource leak in smdk_init error path
authorAxel Lin <axel.lin@gmail.com>
Thu, 25 Nov 2010 07:11:45 +0000 (15:11 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 25 Nov 2010 11:15:00 +0000 (11:15 +0000)
Fix the error path to properly free allocated resources.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Jassi Brar <jassi.brar@samsung.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/samsung/smdk_wm9713.c

index 7ce243086e7d2edb276000e16ecf11f4075d9e20..238cb3a38c5d423572746c3f12b9dcb32dad432d 100644 (file)
@@ -70,24 +70,27 @@ static int __init smdk_init(void)
 
        ret = platform_device_add(smdk_snd_wm9713_device);
        if (ret)
-               goto err;
+               goto err1;
 
        smdk_snd_ac97_device = platform_device_alloc("soc-audio", -1);
        if (!smdk_snd_ac97_device) {
                ret = -ENOMEM;
-               goto err;
+               goto err2;
        }
 
        platform_set_drvdata(smdk_snd_ac97_device, &smdk);
 
        ret = platform_device_add(smdk_snd_ac97_device);
-       if (ret) {
-               platform_device_put(smdk_snd_ac97_device);
-               goto err;
-       }
+       if (ret)
+               goto err3;
 
        return 0;
-err:
+
+err3:
+       platform_device_put(smdk_snd_ac97_device);
+err2:
+       platform_device_del(smdk_snd_wm9713_device);
+err1:
        platform_device_put(smdk_snd_wm9713_device);
        return ret;
 }