mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 13:49:24 -04:00
soc: qcom: qmi_interface: Remove ineffective mutex lock from txn struct
The same QMI transaction data is synchronized using two mutex locks. Remove ineffective transaction mutex lock because it is always covered by QMI txn_lock with same purpose. CRs-Fixed: 2470638 Change-Id: If53e006436c77d572b2d69507e1593e3d57e1cd4 Signed-off-by: Arun Kumar Neelakantam <aneela@codeaurora.org>
This commit is contained in:
parent
4cdda05e9d
commit
3bf90d6d26
2 changed files with 2 additions and 19 deletions
|
|
@ -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);
|
||||
|
|
@ -508,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)
|
||||
|
|
@ -519,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));
|
||||
|
|
@ -736,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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue