dsp: audio_ion: Add checks before memmory access

-Add check for memory access in msm_audio_ion_crash_handler

Change-Id: Idd7a51578260b2779c72040d99483de453c4330e
This commit is contained in:
Ranjith
2022-04-14 17:56:25 +05:30
committed by Gerrit - the friendly Code Review server
parent dbc8b3c1e1
commit a241af4cf8

View File

@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*/ */
#include <linux/init.h> #include <linux/init.h>
@@ -610,23 +610,33 @@ void msm_audio_ion_crash_handler(void)
struct msm_audio_ion_private *ion_data = NULL; struct msm_audio_ion_private *ion_data = NULL;
pr_debug("Inside %s\n", __func__); pr_debug("Inside %s\n", __func__);
if(!msm_audio_ion_fd_list_init) {
pr_err("%s: list not initialized yet, hence returning .... ", __func__);
return;
}
mutex_lock(&(msm_audio_ion_fd_list.list_mutex)); mutex_lock(&(msm_audio_ion_fd_list.list_mutex));
list_for_each_entry(msm_audio_fd_data, list_for_each_entry(msm_audio_fd_data,
&msm_audio_ion_fd_list.fd_list, list) { &msm_audio_ion_fd_list.fd_list, list) {
handle = msm_audio_fd_data->handle; if(msm_audio_fd_data) {
ion_data = dev_get_drvdata(msm_audio_fd_data->dev); handle = msm_audio_fd_data->handle;
/* clean if CMA was used*/ ion_data = dev_get_drvdata(msm_audio_fd_data->dev);
if (msm_audio_fd_data->hyp_assign) { /* clean if CMA was used*/
msm_audio_hyp_unassign(msm_audio_fd_data); if (msm_audio_fd_data->hyp_assign)
msm_audio_hyp_unassign(msm_audio_fd_data);
if(handle)
msm_audio_ion_free(handle, ion_data);
} }
msm_audio_ion_free(handle, ion_data);
} }
list_for_each_safe(ptr, next, list_for_each_safe(ptr, next,
&msm_audio_ion_fd_list.fd_list) { &msm_audio_ion_fd_list.fd_list) {
msm_audio_fd_data = list_entry(ptr, struct msm_audio_fd_data, if(ptr) {
list); msm_audio_fd_data = list_entry(ptr, struct msm_audio_fd_data,
list_del(&(msm_audio_fd_data->list)); list);
kfree(msm_audio_fd_data); if(msm_audio_fd_data) {
list_del(&(msm_audio_fd_data->list));
kfree(msm_audio_fd_data);
}
}
} }
mutex_unlock(&(msm_audio_ion_fd_list.list_mutex)); mutex_unlock(&(msm_audio_ion_fd_list.list_mutex));
} }