Loading drivers/soc/qcom/qmi_interface.c +14 −11 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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); } Loading Loading
drivers/soc/qcom/qmi_interface.c +14 −11 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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); } Loading