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:
Walter Yang 2016-07-27 15:07:53 +08:00
parent 956d9b1ab3
commit febf4856e5
3 changed files with 13 additions and 3 deletions

View file

@ -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;
}

View file

@ -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;
}
}

View file

@ -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;
}
/*