Commit 283e42e0 authored by Lu Guanqun's avatar Lu Guanqun Committed by Mark Brown

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: default avatarLu Guanqun <guanqun.lu@intel.com>
Acked-by: default avatarVinod Koul <vinod.koul@intel.com>
Acked-by: default avatarLiam Girdwood <lrg@ti.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 22be504a
...@@ -233,6 +233,10 @@ static int sst_platform_open(struct snd_pcm_substream *substream) ...@@ -233,6 +233,10 @@ static int sst_platform_open(struct snd_pcm_substream *substream)
pr_debug("sst_platform_open called\n"); pr_debug("sst_platform_open called\n");
snd_soc_set_runtime_hwparams(substream, &sst_platform_pcm_hw); 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); stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream) if (!stream)
...@@ -260,8 +264,8 @@ static int sst_platform_open(struct snd_pcm_substream *substream) ...@@ -260,8 +264,8 @@ static int sst_platform_open(struct snd_pcm_substream *substream)
return ret_val; return ret_val;
} }
runtime->private_data = stream; 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) static int sst_platform_close(struct snd_pcm_substream *substream)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment