|
@@ -1746,11 +1746,14 @@ static void ipa3_q6_clnt_svc_arrive(struct work_struct *work)
|
|
|
IPAWANERR(
|
|
|
"ipa3_qmi_init_modem_send_sync_msg failed due to SSR!\n");
|
|
|
/* Cleanup when ipa3_wwan_remove is called */
|
|
|
- mutex_lock(&ipa3_qmi_lock);
|
|
|
- qmi_handle_release(ipa_q6_clnt);
|
|
|
- vfree(ipa_q6_clnt);
|
|
|
- ipa_q6_clnt = NULL;
|
|
|
- mutex_unlock(&ipa3_qmi_lock);
|
|
|
+ if (ipa_q6_clnt != NULL) {
|
|
|
+ mutex_lock(&ipa3_qmi_lock);
|
|
|
+ qmi_handle_release(ipa_q6_clnt);
|
|
|
+ vfree(ipa_q6_clnt);
|
|
|
+ ipa_q6_clnt = NULL;
|
|
|
+ mutex_unlock(&ipa3_qmi_lock);
|
|
|
+ }
|
|
|
+ IPAWANERR("Exit from service arrive fun\n");
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -2444,6 +2447,8 @@ int ipa3_qmi_enable_per_client_stats(
|
|
|
|
|
|
IPAWANDBG("Sending QMI_IPA_ENABLE_PER_CLIENT_STATS_REQ_V01\n");
|
|
|
|
|
|
+ if (unlikely(!ipa_q6_clnt))
|
|
|
+ return -ETIMEDOUT;
|
|
|
rc = ipa3_qmi_send_req_wait(ipa_q6_clnt,
|
|
|
&req_desc, req,
|
|
|
&resp_desc, resp,
|
|
@@ -2481,6 +2486,8 @@ int ipa3_qmi_get_per_client_packet_stats(
|
|
|
|
|
|
IPAWANDBG("Sending QMI_IPA_GET_STATS_PER_CLIENT_REQ_V01\n");
|
|
|
|
|
|
+ if (unlikely(!ipa_q6_clnt))
|
|
|
+ return -ETIMEDOUT;
|
|
|
rc = ipa3_qmi_send_req_wait(ipa_q6_clnt,
|
|
|
&req_desc, req,
|
|
|
&resp_desc, resp,
|
|
@@ -2538,6 +2545,8 @@ int ipa3_qmi_send_mhi_cleanup_request(struct ipa_mhi_cleanup_req_msg_v01 *req)
|
|
|
resp_desc.msg_id = QMI_IPA_MHI_CLEANUP_RESP_V01;
|
|
|
resp_desc.ei_array = ipa_mhi_cleanup_resp_msg_v01_ei;
|
|
|
|
|
|
+ if (unlikely(!ipa_q6_clnt))
|
|
|
+ return -ETIMEDOUT;
|
|
|
rc = ipa3_qmi_send_req_wait(ipa_q6_clnt,
|
|
|
&req_desc, req,
|
|
|
&resp_desc, &resp,
|