3.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Jon Paul Maloy <jon.ma...@ericsson.com>

[ 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.ma...@ericsson.com>
Signed-off-by: David S. Miller <da...@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
 net/tipc/link.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -1936,7 +1936,12 @@ void tipc_link_bundle_rcv(struct sk_buff
                }
                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);


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to