aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/tipc/bcast.c5
-rw-r--r--net/tipc/bcast.h2
-rw-r--r--net/tipc/socket.c2
3 files changed, 6 insertions, 3 deletions
diff --git a/net/tipc/bcast.c b/net/tipc/bcast.c
index 5264a8ff6e01..88edfb358ae7 100644
--- a/net/tipc/bcast.c
+++ b/net/tipc/bcast.c
@@ -760,7 +760,7 @@ u32 tipc_bcast_get_broadcast_ratio(struct net *net)
760 return bb->rc_ratio; 760 return bb->rc_ratio;
761} 761}
762 762
763void tipc_mcast_filter_msg(struct sk_buff_head *defq, 763void tipc_mcast_filter_msg(struct net *net, struct sk_buff_head *defq,
764 struct sk_buff_head *inputq) 764 struct sk_buff_head *inputq)
765{ 765{
766 struct sk_buff *skb, *_skb, *tmp; 766 struct sk_buff *skb, *_skb, *tmp;
@@ -775,6 +775,9 @@ void tipc_mcast_filter_msg(struct sk_buff_head *defq,
775 return; 775 return;
776 776
777 node = msg_orignode(hdr); 777 node = msg_orignode(hdr);
778 if (node == tipc_own_addr(net))
779 return;
780
778 port = msg_origport(hdr); 781 port = msg_origport(hdr);
779 782
780 /* Has the twin SYN message already arrived ? */ 783 /* Has the twin SYN message already arrived ? */
diff --git a/net/tipc/bcast.h b/net/tipc/bcast.h
index 484bde289d3a..dadad953e2be 100644
--- a/net/tipc/bcast.h
+++ b/net/tipc/bcast.h
@@ -101,7 +101,7 @@ int tipc_bclink_reset_stats(struct net *net);
101u32 tipc_bcast_get_broadcast_mode(struct net *net); 101u32 tipc_bcast_get_broadcast_mode(struct net *net);
102u32 tipc_bcast_get_broadcast_ratio(struct net *net); 102u32 tipc_bcast_get_broadcast_ratio(struct net *net);
103 103
104void tipc_mcast_filter_msg(struct sk_buff_head *defq, 104void tipc_mcast_filter_msg(struct net *net, struct sk_buff_head *defq,
105 struct sk_buff_head *inputq); 105 struct sk_buff_head *inputq);
106 106
107static inline void tipc_bcast_lock(struct net *net) 107static inline void tipc_bcast_lock(struct net *net)
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index a7b3e1a070e4..8ac8ddf1e324 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -2166,7 +2166,7 @@ static void tipc_sk_filter_rcv(struct sock *sk, struct sk_buff *skb,
2166 tipc_group_filter_msg(grp, &inputq, xmitq); 2166 tipc_group_filter_msg(grp, &inputq, xmitq);
2167 2167
2168 if (unlikely(!grp) && mtyp == TIPC_MCAST_MSG) 2168 if (unlikely(!grp) && mtyp == TIPC_MCAST_MSG)
2169 tipc_mcast_filter_msg(&tsk->mc_method.deferredq, &inputq); 2169 tipc_mcast_filter_msg(net, &tsk->mc_method.deferredq, &inputq);
2170 2170
2171 /* Validate and add to receive buffer if there is space */ 2171 /* Validate and add to receive buffer if there is space */
2172 while ((skb = __skb_dequeue(&inputq))) { 2172 while ((skb = __skb_dequeue(&inputq))) {