diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c index 77fe6632b3e8..65e208785b06 100644 --- a/net/qrtr/qrtr.c +++ b/net/qrtr/qrtr.c @@ -881,13 +881,11 @@ static bool qrtr_must_forward(struct qrtr_node *src, return false; } -static void qrtr_fwd_ctrl_pkt(struct sk_buff *skb) +static void qrtr_fwd_ctrl_pkt(struct qrtr_node *src, struct sk_buff *skb) { struct qrtr_node *node; - struct qrtr_node *src; struct qrtr_cb *cb = (struct qrtr_cb *)skb->cb; - src = qrtr_node_lookup(cb->src_node); down_read(&qrtr_epts_lock); list_for_each_entry(node, &qrtr_all_epts, item) { struct sockaddr_qrtr from; @@ -912,7 +910,6 @@ static void qrtr_fwd_ctrl_pkt(struct sk_buff *skb) qrtr_node_enqueue(node, skbn, cb->type, &from, &to, 0); } up_read(&qrtr_epts_lock); - qrtr_node_release(src); } static void qrtr_fwd_pkt(struct sk_buff *skb, struct qrtr_cb *cb) @@ -972,7 +969,7 @@ static void qrtr_node_rx_work(struct kthread_work *work) struct qrtr_sock *ipc; if (cb->type != QRTR_TYPE_DATA) - qrtr_fwd_ctrl_pkt(skb); + qrtr_fwd_ctrl_pkt(node, skb); if (cb->type == QRTR_TYPE_RESUME_TX) { if (cb->dst_node != qrtr_local_nid) {