ASoC: msm: set pointers to NULL after kfree
In lsm-related driver files, some pointers are not set as NULL after the memory is freed, which will leave many dangling pointers. Set them to NULL explicitly to avoid potential risk. CRs-Fixed: 997059 Change-Id: I44925240705608510266a51225cc02611637c571 Signed-off-by: Walter Yang <yandongy@codeaurora.org>
This commit is contained in:
parent
956d9b1ab3
commit
febf4856e5
3 changed files with 13 additions and 3 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2015, Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013-2016, Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
|
@ -1209,6 +1209,7 @@ static int msm_cpe_lsm_ioctl_shared(struct snd_pcm_substream *substream,
|
|||
dev_err(rtd->dev, "%s: No memory for sound model\n",
|
||||
__func__);
|
||||
kfree(session->conf_levels);
|
||||
session->conf_levels = NULL;
|
||||
return -ENOMEM;
|
||||
}
|
||||
session->snd_model_size = snd_model.data_size;
|
||||
|
@ -1220,6 +1221,8 @@ static int msm_cpe_lsm_ioctl_shared(struct snd_pcm_substream *substream,
|
|||
__func__);
|
||||
kfree(session->conf_levels);
|
||||
kfree(session->snd_model_data);
|
||||
session->conf_levels = NULL;
|
||||
session->snd_model_data = NULL;
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
|
@ -1231,6 +1234,8 @@ static int msm_cpe_lsm_ioctl_shared(struct snd_pcm_substream *substream,
|
|||
__func__, rc);
|
||||
kfree(session->snd_model_data);
|
||||
kfree(session->conf_levels);
|
||||
session->snd_model_data = NULL;
|
||||
session->conf_levels = NULL;
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -1244,6 +1249,8 @@ static int msm_cpe_lsm_ioctl_shared(struct snd_pcm_substream *substream,
|
|||
lsm_ops->lsm_shmem_dealloc(cpe->core_handle, session);
|
||||
kfree(session->snd_model_data);
|
||||
kfree(session->conf_levels);
|
||||
session->snd_model_data = NULL;
|
||||
session->conf_levels = NULL;
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
|
@ -467,7 +467,9 @@ static void msm_dai_slim_remove_dai_data(
|
|||
dai_data_t = &drv_data->slim_dai_data[i];
|
||||
|
||||
kfree(dai_data_t->chan_h);
|
||||
dai_data_t->chan_h = NULL;
|
||||
kfree(dai_data_t->sh_ch);
|
||||
dai_data_t->sh_ch = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2015, Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013-2016, Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
|
@ -348,6 +348,7 @@ void q6lsm_client_free(struct lsm_client *client)
|
|||
q6lsm_mmap_apr_dereg();
|
||||
mutex_destroy(&client->cmd_lock);
|
||||
kfree(client);
|
||||
client = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Reference in a new issue