asoc: lsm: free confidence_levels memory to avoid memory leakage
prtd->lsm_client->confidence_levels is allocated in msm_lsm_get_conf_levels and not freed in msm_lsm_set_conf. Make this change to free this memory. Change-Id: I617703b36c13e065fdf995e89121c442b32b08f3 Signed-off-by: Meng Wang <mengw@codeaurora.org>
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
669089fdbd
commit
d3f2c2b5a4
@@ -659,6 +659,10 @@ static int msm_lsm_set_conf(struct snd_pcm_substream *substream,
|
||||
"%s: Failed to set min_conf_levels, err = %d\n",
|
||||
__func__, rc);
|
||||
|
||||
if (prtd->lsm_client->confidence_levels) {
|
||||
kfree(prtd->lsm_client->confidence_levels);
|
||||
prtd->lsm_client->confidence_levels = NULL;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -1055,7 +1059,6 @@ static int msm_lsm_ioctl_shared(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_runtime *runtime;
|
||||
struct lsm_priv *prtd;
|
||||
struct snd_lsm_detection_params det_params;
|
||||
uint8_t *confidence_level = NULL;
|
||||
uint32_t max_detection_stages_supported = LSM_MAX_STAGES_PER_SESSION;
|
||||
|
||||
if (!substream || !substream->private_data) {
|
||||
@@ -1210,12 +1213,12 @@ static int msm_lsm_ioctl_shared(struct snd_pcm_substream *substream,
|
||||
dev_err(rtd->dev,
|
||||
"%s: Register snd Model v2 failed =%d\n",
|
||||
__func__, rc);
|
||||
kfree(confidence_level);
|
||||
q6lsm_snd_model_buf_free(prtd->lsm_client, &p_info);
|
||||
}
|
||||
|
||||
kfree(prtd->lsm_client->confidence_levels);
|
||||
prtd->lsm_client->confidence_levels = NULL;
|
||||
if (prtd->lsm_client->confidence_levels) {
|
||||
kfree(prtd->lsm_client->confidence_levels);
|
||||
prtd->lsm_client->confidence_levels = NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SNDRV_LSM_SET_PARAMS:
|
||||
@@ -1247,10 +1250,10 @@ static int msm_lsm_ioctl_shared(struct snd_pcm_substream *substream,
|
||||
dev_err(rtd->dev,
|
||||
"%s: Failed to set params, err = %d\n",
|
||||
__func__, rc);
|
||||
|
||||
kfree(prtd->lsm_client->confidence_levels);
|
||||
prtd->lsm_client->confidence_levels = NULL;
|
||||
|
||||
if (prtd->lsm_client->confidence_levels) {
|
||||
kfree(prtd->lsm_client->confidence_levels);
|
||||
prtd->lsm_client->confidence_levels = NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
case SNDRV_LSM_DEREG_SND_MODEL:
|
||||
|
Reference in New Issue
Block a user