From b35b8b705c0a2bf5e471c8f6e205e77165cc4eaa Mon Sep 17 00:00:00 2001 From: David Lin Date: Thu, 28 Jun 2018 11:59:44 -0700 Subject: [PATCH] soc: qcom: qmi: Fix inconsistent locking This patch addresses the following locking error: qmi_interface.c:1998 qmi_svc_event_notifier_register() warn: inconsistent returns 'mutex:&temp->svc_addr_list_lock' Bug: 77543262 Test: build & boot Change-Id: I45ac3ac961e0b0a33bc403ea8b130691bd378075 Signed-off-by: David Lin --- drivers/soc/qcom/qmi_interface.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/soc/qcom/qmi_interface.c b/drivers/soc/qcom/qmi_interface.c index 0b952a48a33e..7f29fdb58d72 100644 --- a/drivers/soc/qcom/qmi_interface.c +++ b/drivers/soc/qcom/qmi_interface.c @@ -1974,8 +1974,10 @@ int qmi_svc_event_notifier_register(uint32_t service_id, svc_info_arr = kmalloc_array(num_servers, sizeof(*svc_info_arr), GFP_KERNEL); - if (!svc_info_arr) - return -ENOMEM; + if (!svc_info_arr) { + ret = -ENOMEM; + goto out; + } num_servers = msm_ipc_router_lookup_server_name( &svc_name, svc_info_arr, @@ -1993,6 +1995,8 @@ int qmi_svc_event_notifier_register(uint32_t service_id, spin_unlock_irqrestore(&temp->nb_lock, flags); } } + +out: mutex_unlock(&temp->svc_addr_list_lock); return ret;