summaryrefslogtreecommitdiffstats
path: root/sound/soc/intel
diff options
context:
space:
mode:
authorJie Yang <yang.jie@intel.com>2015-05-30 22:33:58 +0800
committerMark Brown <broonie@kernel.org>2015-06-02 15:34:11 +0100
commit2dbc80caf7e93c3d49787cf939fc416873125c1b (patch)
tree96415a9dad4b9266e7bd61e7b778dc79e51fc56e /sound/soc/intel
parent6e5132f79a2e441bde4818abdc813859c8064901 (diff)
downloadop-kernel-dev-2dbc80caf7e93c3d49787cf939fc416873125c1b.zip
op-kernel-dev-2dbc80caf7e93c3d49787cf939fc416873125c1b.tar.gz
ASoC: Intel: check and clear runtime module pointer
Add check runtime module pointers before freeing them, and clear them to NULL after freed. With this implemented, we can avoid NULL pointer dereference or double free errors. Signed-off-by: Jie Yang <yang.jie@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/intel')
-rw-r--r--sound/soc/intel/haswell/sst-haswell-pcm.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sound/soc/intel/haswell/sst-haswell-pcm.c b/sound/soc/intel/haswell/sst-haswell-pcm.c
index 23ae040..f97fa5a 100644
--- a/sound/soc/intel/haswell/sst-haswell-pcm.c
+++ b/sound/soc/intel/haswell/sst-haswell-pcm.c
@@ -928,10 +928,15 @@ static void hsw_pcm_free_modules(struct hsw_priv_data *pdata)
for (i = 0; i < ARRAY_SIZE(mod_map); i++) {
pcm_data = &pdata->pcm[mod_map[i].dai_id][mod_map[i].stream];
- sst_hsw_runtime_module_free(pcm_data->runtime);
+ if (pcm_data->runtime){
+ sst_hsw_runtime_module_free(pcm_data->runtime);
+ pcm_data->runtime = NULL;
+ }
}
- if (sst_hsw_is_module_loaded(hsw, SST_HSW_MODULE_WAVES)) {
+ if (sst_hsw_is_module_loaded(hsw, SST_HSW_MODULE_WAVES) &&
+ pdata->runtime_waves) {
sst_hsw_runtime_module_free(pdata->runtime_waves);
+ pdata->runtime_waves = NULL;
}
}
OpenPOWER on IntegriCloud