diff options
Diffstat (limited to 'net/tipc/link.c')
-rw-r--r-- | net/tipc/link.c | 18 |
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 | } |