summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
authorGaurav Kohli <gkohli@codeaurora.org>2016-10-05 12:34:02 +0530
committerPuja Gupta <pujag@codeaurora.org>2016-10-05 14:55:47 -0700
commit120427c62d148587521a6ce3198d7529435ce242 (patch)
treedf573c001096255ded2597688025e523772bb8df /drivers/soc
parent057bdafd976ca7609ed223dbd4473d535bcb6459 (diff)
soc: qcom: Use syncronization while freeing the qmi_client data
Potential use after free possibility when trying to access qmi client data in the ssr notification and root pd_down notification handling. CRs-Fixed: 1074483 Change-Id: I5390810861dbc1da368757df2b20e5daa35bd081 Signed-off-by: Gaurav Kohli <gkohli@codeaurora.org>
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/qcom/service-notifier.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/soc/qcom/service-notifier.c b/drivers/soc/qcom/service-notifier.c
index 28b47ca6112a..504a3263253c 100644
--- a/drivers/soc/qcom/service-notifier.c
+++ b/drivers/soc/qcom/service-notifier.c
@@ -114,6 +114,7 @@ struct qmi_client_info {
};
static LIST_HEAD(qmi_client_list);
static DEFINE_MUTEX(qmi_list_lock);
+static DEFINE_MUTEX(qmi_client_release_lock);
static DEFINE_MUTEX(notif_add_lock);
@@ -417,9 +418,11 @@ static void root_service_service_exit(struct qmi_client_info *data,
* Destroy client handle and try connecting when
* service comes up again.
*/
+ mutex_lock(&qmi_client_release_lock);
data->service_connected = false;
qmi_handle_destroy(data->clnt_handle);
data->clnt_handle = NULL;
+ mutex_unlock(&qmi_client_release_lock);
}
static void root_service_exit_work(struct work_struct *work)