diff options
author | Pablo Neira <pablo@netfilter.org> | 2016-11-14 17:40:30 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-11-15 22:14:27 -0500 |
commit | 73e2d5e34b6cdd1080038daf3d6d6d744a9eefe6 (patch) | |
tree | b0fdcb72cdb2d8e465179a078b292a2112bae212 /net/ipv4/udp.c | |
parent | d0e3f65b34c528ec2b7d1ba9a620b483f71788d3 (diff) |
udp: restore UDPlite many-cast delivery
Honor udptable parameter that is passed to __udp*_lib_mcast_deliver(),
otherwise udplite broadcast/multicast use the wrong table and it breaks.
Fixes: 2dc41cff7545 ("udp: Use hash2 for long hash1 chains in __udp*_lib_mcast_deliver.")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/udp.c')
-rw-r--r-- | net/ipv4/udp.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index d123d68f4d1d..0de9d5d2b9ae 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -1652,10 +1652,10 @@ static int __udp4_lib_mcast_deliver(struct net *net, struct sk_buff *skb, | |||
1652 | 1652 | ||
1653 | if (use_hash2) { | 1653 | if (use_hash2) { |
1654 | hash2_any = udp4_portaddr_hash(net, htonl(INADDR_ANY), hnum) & | 1654 | hash2_any = udp4_portaddr_hash(net, htonl(INADDR_ANY), hnum) & |
1655 | udp_table.mask; | 1655 | udptable->mask; |
1656 | hash2 = udp4_portaddr_hash(net, daddr, hnum) & udp_table.mask; | 1656 | hash2 = udp4_portaddr_hash(net, daddr, hnum) & udptable->mask; |
1657 | start_lookup: | 1657 | start_lookup: |
1658 | hslot = &udp_table.hash2[hash2]; | 1658 | hslot = &udptable->hash2[hash2]; |
1659 | offset = offsetof(typeof(*sk), __sk_common.skc_portaddr_node); | 1659 | offset = offsetof(typeof(*sk), __sk_common.skc_portaddr_node); |
1660 | } | 1660 | } |
1661 | 1661 | ||