mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 13:49:24 -04:00
Merge "soc: qcom: qmi_interface: Remove ineffective mutex lock from txn struct"
This commit is contained in:
commit
50d99abda8
2 changed files with 3 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);
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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