summaryrefslogtreecommitdiffstats
path: root/net/tipc/link.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/link.c')
-rw-r--r--net/tipc/link.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c
index 93a8033263c0..96a8072f73cc 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -1479,6 +1479,7 @@ void tipc_rcv(struct sk_buff *head, struct tipc_bearer *b_ptr)
1479 case TIPC_MEDIUM_IMPORTANCE: 1479 case TIPC_MEDIUM_IMPORTANCE:
1480 case TIPC_HIGH_IMPORTANCE: 1480 case TIPC_HIGH_IMPORTANCE:
1481 case TIPC_CRITICAL_IMPORTANCE: 1481 case TIPC_CRITICAL_IMPORTANCE:
1482 case CONN_MANAGER:
1482 tipc_node_unlock(n_ptr); 1483 tipc_node_unlock(n_ptr);
1483 tipc_sk_rcv(buf); 1484 tipc_sk_rcv(buf);
1484 continue; 1485 continue;
@@ -1493,10 +1494,6 @@ void tipc_rcv(struct sk_buff *head, struct tipc_bearer *b_ptr)
1493 tipc_node_unlock(n_ptr); 1494 tipc_node_unlock(n_ptr);
1494 tipc_named_rcv(buf); 1495 tipc_named_rcv(buf);
1495 continue; 1496 continue;
1496 case CONN_MANAGER:
1497 tipc_node_unlock(n_ptr);
1498 tipc_port_proto_rcv(buf);
1499 continue;
1500 case BCAST_PROTOCOL: 1497 case BCAST_PROTOCOL:
1501 tipc_link_sync_rcv(n_ptr, buf); 1498 tipc_link_sync_rcv(n_ptr, buf);
1502 break; 1499 break;
@@ -2106,6 +2103,7 @@ void tipc_link_bundle_rcv(struct sk_buff *buf)
2106 u32 msgcount = msg_msgcnt(buf_msg(buf)); 2103 u32 msgcount = msg_msgcnt(buf_msg(buf));
2107 u32 pos = INT_H_SIZE; 2104 u32 pos = INT_H_SIZE;
2108 struct sk_buff *obuf; 2105 struct sk_buff *obuf;
2106 struct tipc_msg *omsg;
2109 2107
2110 while (msgcount--) { 2108 while (msgcount--) {
2111 obuf = buf_extract(buf, pos); 2109 obuf = buf_extract(buf, pos);
@@ -2113,8 +2111,16 @@ void tipc_link_bundle_rcv(struct sk_buff *buf)
2113 pr_warn("Link unable to unbundle message(s)\n"); 2111 pr_warn("Link unable to unbundle message(s)\n");
2114 break; 2112 break;
2115 } 2113 }
2116 pos += align(msg_size(buf_msg(obuf))); 2114 omsg = buf_msg(obuf);
2117 tipc_net_route_msg(obuf); 2115 pos += align(msg_size(omsg));
2116 if (msg_isdata(omsg) || (msg_user(omsg) == CONN_MANAGER)) {
2117 tipc_sk_rcv(obuf);
2118 } else if (msg_user(omsg) == NAME_DISTRIBUTOR) {
2119 tipc_named_rcv(obuf);
2120 } else {
2121 pr_warn("Illegal bundled msg: %u\n", msg_user(omsg));
2122 kfree_skb(obuf);
2123 }
2118 } 2124 }
2119 kfree_skb(buf); 2125 kfree_skb(buf);
2120} 2126}