aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLu Guanqun <guanqun.lu@intel.com>2011-09-06 15:21:43 +0800
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-09-08 15:43:03 -0700
commit283e42e0114aba331b0055839f6277a4a7cfbc64 (patch)
treed317ef3b3f47715339ec6fc030ad7bf5b2674734
parent22be504aaa4a3133d81e3fb0c4287960aea19c37 (diff)
downloadkernel_goldelico_gta04-283e42e0114aba331b0055839f6277a4a7cfbc64.zip
kernel_goldelico_gta04-283e42e0114aba331b0055839f6277a4a7cfbc64.tar.gz
kernel_goldelico_gta04-283e42e0114aba331b0055839f6277a4a7cfbc64.tar.bz2
ASoC: sst_platform: fix memory leak
snd_pcm_hw_constraint_integer() could return -1, in this case, sst platform is not opened successfully. However the corresponding close callback isn't able to be called later on to release these two allocated memories, thus resulting in memory leak. This patch moves the check for hardware contraints earlier, thus resolving this issue. Signed-off-by: Lu Guanqun <guanqun.lu@intel.com> Acked-by: Vinod Koul <vinod.koul@intel.com> Acked-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--sound/soc/mid-x86/sst_platform.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sound/soc/mid-x86/sst_platform.c b/sound/soc/mid-x86/sst_platform.c
index af666ae..9925d20 100644
--- a/sound/soc/mid-x86/sst_platform.c
+++ b/sound/soc/mid-x86/sst_platform.c
@@ -233,6 +233,10 @@ static int sst_platform_open(struct snd_pcm_substream *substream)
pr_debug("sst_platform_open called\n");
snd_soc_set_runtime_hwparams(substream, &sst_platform_pcm_hw);
+ ret_val = snd_pcm_hw_constraint_integer(runtime,
+ SNDRV_PCM_HW_PARAM_PERIODS);
+ if (ret_val < 0)
+ return ret_val;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
@@ -260,8 +264,8 @@ static int sst_platform_open(struct snd_pcm_substream *substream)
return ret_val;
}
runtime->private_data = stream;
- return snd_pcm_hw_constraint_integer(runtime,
- SNDRV_PCM_HW_PARAM_PERIODS);
+
+ return 0;
}
static int sst_platform_close(struct snd_pcm_substream *substream)