diff options
author | Jon Paul Maloy <jon.maloy@ericsson.com> | 2014-10-17 15:25:28 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-10-17 23:50:53 -0400 |
commit | 643566d4b47e2956110e79c0e6f65db9b9ea42c6 (patch) | |
tree | 38c2d7717a60e32c7e814d49877500ab8c3ed3b3 /net/tipc | |
parent | 870c3151382c980590d4d609babf3b0243e7db93 (diff) |
tipc: fix bug in bundled buffer reception
In commit ec8a2e5621db2da24badb3969eda7fd359e1869f ("tipc: same receive
code path for connection protocol and data messages") we omitted the
the possiblilty that an arriving message extracted from a bundle buffer
may be a multicast message. Such messages need to be to be delivered to
the socket via a separate function, tipc_sk_mcast_rcv(). As a result,
small multicast messages arriving as members of a bundle buffer will be
silently dropped.
This commit corrects the error by considering this case in the function
tipc_link_bundle_rcv().
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/link.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c index 65410e18b8a6..1db162aa64a5 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c | |||
@@ -1924,7 +1924,12 @@ void tipc_link_bundle_rcv(struct sk_buff *buf) | |||
1924 | } | 1924 | } |
1925 | omsg = buf_msg(obuf); | 1925 | omsg = buf_msg(obuf); |
1926 | pos += align(msg_size(omsg)); | 1926 | pos += align(msg_size(omsg)); |
1927 | if (msg_isdata(omsg) || (msg_user(omsg) == CONN_MANAGER)) { | 1927 | if (msg_isdata(omsg)) { |
1928 | if (unlikely(msg_type(omsg) == TIPC_MCAST_MSG)) | ||
1929 | tipc_sk_mcast_rcv(obuf); | ||
1930 | else | ||
1931 | tipc_sk_rcv(obuf); | ||
1932 | } else if (msg_user(omsg) == CONN_MANAGER) { | ||
1928 | tipc_sk_rcv(obuf); | 1933 | tipc_sk_rcv(obuf); |
1929 | } else if (msg_user(omsg) == NAME_DISTRIBUTOR) { | 1934 | } else if (msg_user(omsg) == NAME_DISTRIBUTOR) { |
1930 | tipc_named_rcv(obuf); | 1935 | tipc_named_rcv(obuf); |