ASoC: pcm: free path list before exiting from error conditions
PATCH 1/1 ASoC: pcm: free path list before exiting from error conditions
dpcm_path_get() allocates dynamic memory to hold path list. Corresponding dpcm_path_put() must be called to free the memory. dpcm_path_put() is not called under several error conditions. This leads to memory leak.
Signed-off-by Patrick Lai <[email protected]>
--- sound/soc/soc-pcm.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
sound/soc/soc-pcm.c +3 -0
@@ -1989,6 +1989,7 @@ int soc_dpcm_runtime_update(struct snd_soc_card *card) paths =dpcm_path_get (fe,SNDRV_PCM_STREAM_PLAYBACK , &list);if (paths <0 ) { +dpcm_path_put (&list);dev_warn (fe->dev,"ASoC: %s no valid %s path\n" , fe->dai_link->name,"playback" );mutex_unlock (&card->mutex);
@@ -2018,6 +2019,7 @@ capture: paths =dpcm_path_get (fe,SNDRV_PCM_STREAM_CAPTURE , &list);if (paths <0 ) { +dpcm_path_put (&list);dev_warn (fe->dev,"ASoC: %s no valid %s path\n" , fe->dai_link->name,"capture" );mutex_unlock (&card->mutex);
@@ -2082,6 +2084,7 @@ static int dpcm_fe_dai_open(struct snd_pcm_substream *fe_substream) fe->dpcm[stream].runtime = fe_substream->runtime;if (dpcm_path_get (fe, stream, &list) <=0 ) { +dpcm_path_put (&list);dev_dbg (fe->dev,"ASoC: %s no valid %s route\n" , fe->dai_link->name, stream ?"capture" :"playback" ); }
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation
Quoted 4 lines · Patrick Lai
dpcm_path_get()allocates dynamic memory to hold path list. Correspondingdpcm_path_put()must be called to free the memory.dpcm_path_put()is not called under several error conditions. This leads to memory leak.
Applied, thanks.