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>
This commit is contained in:
Jie Yang 2015-05-30 22:33:58 +08:00 коммит произвёл Mark Brown
Родитель 6e5132f79a
Коммит 2dbc80caf7
1 изменённых файлов: 7 добавлений и 2 удалений

Просмотреть файл

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