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 <pa...@ucw.cz>
Signed-off-by: V Sujith Kumar Reddy <vsuji...@codeaurora.org>
Signed-off-by: Srinivasa Rao Mandadapu <sriva...@codeaurora.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 36d1512..7a3fdf8 100644
--- a/sound/soc/qcom/lpass-platform.c
+++ b/sound/soc/qcom/lpass-platform.c
@@ -122,8 +122,10 @@ static int lpass_platform_pcmops_open(struct 
snd_soc_component *component,
        else
                dma_ch = 0;
 
-       if (dma_ch < 0)
+       if (dma_ch < 0) {
+               kfree(data);
                return dma_ch;
+       }
 
        if (cpu_dai->driver->id == LPASS_DP_RX) {
                map = drvdata->hdmiif_map;
@@ -147,6 +149,7 @@ static int lpass_platform_pcmops_open(struct 
snd_soc_component *component,
        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;
-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc.,
is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.

Reply via email to