msm: ipa3: Handle race condition to avoid NULL access

Updated change to avoid race condition and NULL pointer access,
In case of SSR and ioctl call while performing QMI transaction.

Change-Id: I09dbf33d76a3a0d9e4917e62aaf1257a1abe2db9
Signed-off-by: Raghavendar rao l <quic_rlomte@quicinc.com>
This commit is contained in:
Raghavendar rao l
2022-03-14 20:19:10 +05:30
committed by Gerrit - the friendly Code Review server
부모 619508a35f
커밋 859d283fd8

파일 보기

@@ -547,16 +547,22 @@ static int ipa3_qmi_send_req_wait(struct qmi_handle *client_handle,
struct qmi_txn txn; struct qmi_txn txn;
int ret; int ret;
if (!client_handle) mutex_lock(&ipa3_qmi_lock);
if (!client_handle) {
mutex_unlock(&ipa3_qmi_lock);
return -EINVAL; return -EINVAL;
}
ret = qmi_txn_init(client_handle, &txn, resp_desc->ei_array, resp); ret = qmi_txn_init(client_handle, &txn, resp_desc->ei_array, resp);
if (ret < 0) { if (ret < 0) {
IPAWANERR("QMI txn init failed, ret= %d\n", ret); IPAWANERR("QMI txn init failed, ret= %d\n", ret);
mutex_unlock(&ipa3_qmi_lock);
return ret; return ret;
} }
mutex_lock(&ipa3_qmi_lock);
ret = qmi_send_request(client_handle, ret = qmi_send_request(client_handle,
&ipa3_qmi_ctx->server_sq, &ipa3_qmi_ctx->server_sq,
&txn, &txn,
@@ -565,19 +571,16 @@ static int ipa3_qmi_send_req_wait(struct qmi_handle *client_handle,
req_desc->ei_array, req_desc->ei_array,
req); req);
if (unlikely(!ipa_q6_clnt)) {
mutex_unlock(&ipa3_qmi_lock);
return -EINVAL;
}
mutex_unlock(&ipa3_qmi_lock);
if (ret < 0) { if (ret < 0) {
qmi_txn_cancel(&txn); qmi_txn_cancel(&txn);
mutex_unlock(&ipa3_qmi_lock);
return ret; return ret;
} }
ret = qmi_txn_wait(&txn, msecs_to_jiffies(timeout_ms));
ret = qmi_txn_wait(&txn, msecs_to_jiffies(timeout_ms));
mutex_unlock(&ipa3_qmi_lock);
return ret; return ret;
} }