Merge "soc: qcom: qmi_interface: Remove ineffective mutex lock from txn struct"

This commit is contained in:
qctecmdr 2019-09-26 17:45:36 -07:00 • committed by Gerrit - the friendly Code Review server
commit 50d99abda8
2 changed files with 3 additions and 19 deletions

View file

@ -311,7 +311,6 @@ int qmi_txn_init(struct qmi_handle *qmi, struct qmi_txn *txn,
memset(txn, 0, sizeof(*txn));
mutex_init(&txn->lock);
init_completion(&txn->completion);
txn->qmi = qmi;
txn->ei = ei;
@ -347,17 +346,12 @@ int qmi_txn_wait(struct qmi_txn *txn, unsigned long timeout)
ret = wait_for_completion_timeout(&txn->completion, timeout);
mutex_lock(&txn->lock);
if (txn->result == -ENETRESET) {
mutex_unlock(&txn->lock);
return txn->result;
}
mutex_unlock(&txn->lock);
mutex_lock(&qmi->txn_lock);
mutex_lock(&txn->lock);
idr_remove(&qmi->txns, txn->id);
mutex_unlock(&txn->lock);
mutex_unlock(&qmi->txn_lock);
if (ret == 0)
@ -376,9 +370,7 @@ void qmi_txn_cancel(struct qmi_txn *txn)
struct qmi_handle *qmi = txn->qmi;
mutex_lock(&qmi->txn_lock);
mutex_lock(&txn->lock);
idr_remove(&qmi->txns, txn->id);
mutex_unlock(&txn->lock);
mutex_unlock(&qmi->txn_lock);
}
EXPORT_SYMBOL(qmi_txn_cancel);
@ -463,6 +455,7 @@ static void qmi_handle_net_reset(struct qmi_handle *qmi)
/* Already qmi_handle_release() started */
if (!qmi->sock) {
sock_release(sock);
mutex_unlock(&qmi->sock_lock);
return;
}
sock_release(qmi->sock);
@ -507,10 +500,6 @@ static void qmi_handle_message(struct qmi_handle *qmi,
mutex_unlock(&qmi->txn_lock);
return;
}
mutex_lock(&txn->lock);
mutex_unlock(&qmi->txn_lock);
if (txn->dest && txn->ei) {
ret = qmi_decode_message(buf, len, txn->ei, txn->dest);
if (ret < 0)
@ -518,11 +507,10 @@ static void qmi_handle_message(struct qmi_handle *qmi,
txn->result = ret;
complete(&txn->completion);
} else {
} else {
qmi_invoke_handler(qmi, sq, txn, buf, len);
}
mutex_unlock(&txn->lock);
mutex_unlock(&qmi->txn_lock);
} else {
/* Create a txn based on the txn_id of the incoming message */
memset(&tmp_txn, 0, sizeof(tmp_txn));
@ -735,11 +723,9 @@ void qmi_handle_release(struct qmi_handle *qmi)
mutex_lock(&qmi->txn_lock);
idr_for_each_entry(&qmi->txns, txn, txn_id) {
mutex_lock(&txn->lock);
idr_remove(&qmi->txns, txn->id);
txn->result = -ENETRESET;
complete(&txn->completion);
mutex_unlock(&txn->lock);
}
mutex_unlock(&qmi->txn_lock);
idr_destroy(&qmi->txns);

View file

@ -158,7 +158,6 @@ struct qmi_ops {
* struct qmi_txn - transaction context
* @qmi: QMI handle this transaction is associated with
* @id: transaction id
* @lock: for synchronization between handler and waiter of messages
* @completion: completion object as the transaction receives a response
* @result: result code for the completed transaction
* @ei: description of the QMI encoded response (optional)
@ -169,7 +168,6 @@ struct qmi_txn {
u16 id;
struct mutex lock;
struct completion completion;
int result;