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

Commit ddf5e61f authored by Gopi Sai Teja's avatar Gopi Sai Teja Committed by hecaiqiang
Browse files

Add qmi patch_1

Change-Id: I01a20421e69ef1edeee005da57b6604845793606
(cherry picked from commit 20fbddf0e18a3b9c5bb856d1ac2b71ce1ad6a9dc)
parent e5679a76
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -455,17 +455,18 @@ static void qmi_handle_net_reset(struct qmi_handle *qmi)
	if (IS_ERR(sock))
		return;

	mutex_lock(&qmi->sock_lock);
	sock_release(qmi->sock);
	qmi->sock = NULL;
	mutex_unlock(&qmi->sock_lock);

	qmi_recv_del_server(qmi, -1, -1);

	if (qmi->ops.net_reset)
		qmi->ops.net_reset(qmi);

	mutex_lock(&qmi->sock_lock);
	/* Already qmi_handle_release() started */
	if (!qmi->sock) {
		sock_release(sock);
		return;
	}
	sock_release(qmi->sock);
	qmi->sock = sock;
	qmi->sq = sq;
	mutex_unlock(&qmi->sock_lock);
@@ -691,27 +692,29 @@ EXPORT_SYMBOL(qmi_handle_init);
 */
void qmi_handle_release(struct qmi_handle *qmi)
{
	struct socket *sock = qmi->sock;
	struct socket *sock;
	struct qmi_service *svc, *tmp;
	struct qmi_txn *txn;
	int txn_id;

	mutex_lock(&qmi->sock_lock);
	sock = qmi->sock;
	write_lock_bh(&sock->sk->sk_callback_lock);
	sock->sk->sk_user_data = NULL;
	write_unlock_bh(&sock->sk->sk_callback_lock);
	cancel_work_sync(&qmi->work);

	qmi_recv_del_server(qmi, -1, -1);

	mutex_lock(&qmi->sock_lock);
	sock_release(sock);
	qmi->sock = NULL;
	mutex_unlock(&qmi->sock_lock);

	cancel_work_sync(&qmi->work);

	qmi_recv_del_server(qmi, -1, -1);

	destroy_workqueue(qmi->wq);

	mutex_lock(&qmi->txn_lock);
	idr_for_each_entry(&qmi->txns, txn, txn_id) {
		idr_remove(&qmi->txns, txn->id);
		txn->result = -ENETRESET;
		complete(&txn->completion);
	}