ASoC: imx: check kzalloc() result and fix memory leak
authorKulikov Vasiliy <segooon@gmail.com>
Fri, 16 Jul 2010 16:16:54 +0000 (20:16 +0400)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Sat, 17 Jul 2010 18:45:56 +0000 (19:45 +0100)
If kzalloc() fails we must exit with -ENOMEM. Also we must free
allocated runtime->private_data on error as it would be lost on next
call to snd_imx_open().

Signed-off-by: Kulikov Vasiliy <segooon@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/imx/imx-pcm-fiq.c

index 6b518e07eea9ce46d4f74a092e11bff816d9754b..b2bf27282cd2d10189419236f5463c97c95354b7 100644 (file)
@@ -192,6 +192,8 @@ static int snd_imx_open(struct snd_pcm_substream *substream)
        int ret;
 
        iprtd = kzalloc(sizeof(*iprtd), GFP_KERNEL);
+       if (iprtd == NULL)
+               return -ENOMEM;
        runtime->private_data = iprtd;
 
        iprtd->substream = substream;
@@ -202,8 +204,10 @@ static int snd_imx_open(struct snd_pcm_substream *substream)
 
        ret = snd_pcm_hw_constraint_integer(substream->runtime,
                        SNDRV_PCM_HW_PARAM_PERIODS);
-       if (ret < 0)
+       if (ret < 0) {
+               kfree(iprtd);
                return ret;
+       }
 
        snd_soc_set_runtime_hwparams(substream, &snd_imx_hardware);
        return 0;