diff options
Diffstat (limited to 'net/tipc/node.c')
-rw-r--r-- | net/tipc/node.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c index 1bdcf0fc1a4d..c8f6177dd5a2 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c | |||
@@ -1444,13 +1444,14 @@ int tipc_node_xmit(struct net *net, struct sk_buff_head *list, | |||
1444 | 1444 | ||
1445 | if (in_own_node(net, dnode)) { | 1445 | if (in_own_node(net, dnode)) { |
1446 | tipc_loopback_trace(net, list); | 1446 | tipc_loopback_trace(net, list); |
1447 | spin_lock_init(&list->lock); | ||
1447 | tipc_sk_rcv(net, list); | 1448 | tipc_sk_rcv(net, list); |
1448 | return 0; | 1449 | return 0; |
1449 | } | 1450 | } |
1450 | 1451 | ||
1451 | n = tipc_node_find(net, dnode); | 1452 | n = tipc_node_find(net, dnode); |
1452 | if (unlikely(!n)) { | 1453 | if (unlikely(!n)) { |
1453 | skb_queue_purge(list); | 1454 | __skb_queue_purge(list); |
1454 | return -EHOSTUNREACH; | 1455 | return -EHOSTUNREACH; |
1455 | } | 1456 | } |
1456 | 1457 | ||
@@ -1459,7 +1460,7 @@ int tipc_node_xmit(struct net *net, struct sk_buff_head *list, | |||
1459 | if (unlikely(bearer_id == INVALID_BEARER_ID)) { | 1460 | if (unlikely(bearer_id == INVALID_BEARER_ID)) { |
1460 | tipc_node_read_unlock(n); | 1461 | tipc_node_read_unlock(n); |
1461 | tipc_node_put(n); | 1462 | tipc_node_put(n); |
1462 | skb_queue_purge(list); | 1463 | __skb_queue_purge(list); |
1463 | return -EHOSTUNREACH; | 1464 | return -EHOSTUNREACH; |
1464 | } | 1465 | } |
1465 | 1466 | ||
@@ -1491,7 +1492,7 @@ int tipc_node_xmit_skb(struct net *net, struct sk_buff *skb, u32 dnode, | |||
1491 | { | 1492 | { |
1492 | struct sk_buff_head head; | 1493 | struct sk_buff_head head; |
1493 | 1494 | ||
1494 | skb_queue_head_init(&head); | 1495 | __skb_queue_head_init(&head); |
1495 | __skb_queue_tail(&head, skb); | 1496 | __skb_queue_tail(&head, skb); |
1496 | tipc_node_xmit(net, &head, dnode, selector); | 1497 | tipc_node_xmit(net, &head, dnode, selector); |
1497 | return 0; | 1498 | return 0; |