aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/mid-x86/sst_platform.c
diff options
context:
space:
mode:
authorLu Guanqun <guanqun.lu@intel.com>2011-09-06 03:21:43 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-09-08 18:43:03 -0400
commit283e42e0114aba331b0055839f6277a4a7cfbc64 (patch)
treed317ef3b3f47715339ec6fc030ad7bf5b2674734 /sound/soc/mid-x86/sst_platform.c
parent22be504aaa4a3133d81e3fb0c4287960aea19c37 (diff)
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>
Diffstat (limited to 'sound/soc/mid-x86/sst_platform.c')
-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 af666ae671ae..9925d20ab0a3 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)
233 pr_debug("sst_platform_open called\n"); 233 pr_debug("sst_platform_open called\n");
234 234
235 snd_soc_set_runtime_hwparams(substream, &sst_platform_pcm_hw); 235 snd_soc_set_runtime_hwparams(substream, &sst_platform_pcm_hw);
236 ret_val = snd_pcm_hw_constraint_integer(runtime,
237 SNDRV_PCM_HW_PARAM_PERIODS);
238 if (ret_val < 0)
239 return ret_val;
236 240
237 stream = kzalloc(sizeof(*stream), GFP_KERNEL); 241 stream = kzalloc(sizeof(*stream), GFP_KERNEL);
238 if (!stream) 242 if (!stream)
@@ -260,8 +264,8 @@ static int sst_platform_open(struct snd_pcm_substream *substream)
260 return ret_val; 264 return ret_val;
261 } 265 }
262 runtime->private_data = stream; 266 runtime->private_data = stream;
263 return snd_pcm_hw_constraint_integer(runtime, 267
264 SNDRV_PCM_HW_PARAM_PERIODS); 268 return 0;
265} 269}
266 270
267static int sst_platform_close(struct snd_pcm_substream *substream) 271static int sst_platform_close(struct snd_pcm_substream *substream)