Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68e4ea58 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

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

parents 9110cbdb 87ce2eaa
Loading
Loading
Loading
Loading
+3 −17
Original line number Diff line number Diff line
@@ -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)
@@ -521,8 +510,7 @@ static void qmi_handle_message(struct qmi_handle *qmi,
		} 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);
+0 −2
Original line number Diff line number Diff line
@@ -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;