| From 1695efd96b678a4555da317b759dd86fd49ee53b Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 15 Nov 2020 10:26:50 +0530 |
| Subject: ASoC: qcom: lpass-platform: Fix memory leak |
| |
| From: Srinivasa Rao Mandadapu <srivasam@codeaurora.org> |
| |
| [ Upstream commit bd6327fda2f3ded85b69b3c3125c99aaa51c7881 ] |
| |
| lpass_pcm_data is not freed in error paths. Free it in |
| error paths to avoid memory leak. |
| |
| Fixes: 022d00ee0b55 ("ASoC: lpass-platform: Fix broken pcm data usage") |
| Signed-off-by: Pavel Machek <pavel@ucw.cz> |
| Signed-off-by: V Sujith Kumar Reddy <vsujithk@codeaurora.org> |
| Signed-off-by: Srinivasa Rao Mandadapu <srivasam@codeaurora.org> |
| Link: https://lore.kernel.org/r/1605416210-14530-1-git-send-email-srivasam@codeaurora.org |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/soc/qcom/lpass-platform.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| diff --git a/sound/soc/qcom/lpass-platform.c b/sound/soc/qcom/lpass-platform.c |
| index 2f29672477892..1d06e2b7bb635 100644 |
| --- a/sound/soc/qcom/lpass-platform.c |
| +++ b/sound/soc/qcom/lpass-platform.c |
| @@ -81,8 +81,10 @@ static int lpass_platform_pcmops_open(struct snd_pcm_substream *substream) |
| else |
| dma_ch = 0; |
| |
| - if (dma_ch < 0) |
| + if (dma_ch < 0) { |
| + kfree(data); |
| return dma_ch; |
| + } |
| |
| drvdata->substream[dma_ch] = substream; |
| |
| @@ -103,6 +105,7 @@ static int lpass_platform_pcmops_open(struct snd_pcm_substream *substream) |
| ret = snd_pcm_hw_constraint_integer(runtime, |
| SNDRV_PCM_HW_PARAM_PERIODS); |
| if (ret < 0) { |
| + kfree(data); |
| dev_err(soc_runtime->dev, "setting constraints failed: %d\n", |
| ret); |
| return -EINVAL; |
| -- |
| 2.27.0 |
| |