diff options
author | Jon Paul Maloy <jon.maloy@ericsson.com> | 2014-10-17 15:25:28 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-11-14 10:10:20 -0800 |
commit | 96798a1735c430afca60cf0563c93a5973b3edf0 (patch) | |
tree | c8a0edc872a9deb9588da696b15c4a7ac6f53708 /net | |
parent | 0e488ed818c6ff769d698d2f9db624ff57ab6af8 (diff) |
tipc: fix bug in bundled buffer reception
[ Upstream commit 643566d4b47e2956110e79c0e6f65db9b9ea42c6 ]
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-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 fb1485dc6736..640206580f34 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c @@ -1936,7 +1936,12 @@ void tipc_link_bundle_rcv(struct sk_buff *buf) } omsg = buf_msg(obuf); pos += align(msg_size(omsg)); - if (msg_isdata(omsg) || (msg_user(omsg) == CONN_MANAGER)) { + if (msg_isdata(omsg)) { + if (unlikely(msg_type(omsg) == TIPC_MCAST_MSG)) + tipc_sk_mcast_rcv(obuf); + else + tipc_sk_rcv(obuf); + } else if (msg_user(omsg) == CONN_MANAGER) { tipc_sk_rcv(obuf); } else if (msg_user(omsg) == NAME_DISTRIBUTOR) { tipc_named_rcv(obuf); |