aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/udp.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-11-02 13:15:52 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2008-11-02 13:15:52 -0500
commit391e572cd1a63aee9c8d4c2d5e3dada91d86bc43 (patch)
treeb89d924e644a7e66cd2b63d978607c6d0d3e7285 /net/ipv6/udp.c
parent4ac96572f1f6abe44b5e02e80fdfb5a990129613 (diff)
parent48dcc33e5e11de0f76b65b113988dbc930d17395 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (33 commits) af_unix: netns: fix problem of return value IRDA: remove double inclusion of module.h udp: multicast packets need to check namespace net: add documentation for skb recycling key: fix setkey(8) policy set breakage bpa10x: free sk_buff with kfree_skb xfrm: do not leak ESRCH to user space net: Really remove all of LOOPBACK_TSO code. netfilter: nf_conntrack_proto_gre: switch to register_pernet_gen_subsys() netns: add register_pernet_gen_subsys/unregister_pernet_gen_subsys net: delete excess kernel-doc notation pppoe: Fix socket leak. gianfar: Don't reset TBI<->SerDes link if it's already up gianfar: Fix race in TBI/SerDes configuration at91_ether: request/free GPIO for PHY interrupt amd8111e: fix dma_free_coherent context atl1: fix vlan tag regression SMC91x: delete unused local variable "lp" myri10ge: fix stop/go mmio ordering bonding: fix panic when taking bond interface down before removing module ...
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r--net/ipv6/udp.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index e51da8c092fa..71e259e866a1 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -328,7 +328,7 @@ drop:
328 return -1; 328 return -1;
329} 329}
330 330
331static struct sock *udp_v6_mcast_next(struct sock *sk, 331static struct sock *udp_v6_mcast_next(struct net *net, struct sock *sk,
332 __be16 loc_port, struct in6_addr *loc_addr, 332 __be16 loc_port, struct in6_addr *loc_addr,
333 __be16 rmt_port, struct in6_addr *rmt_addr, 333 __be16 rmt_port, struct in6_addr *rmt_addr,
334 int dif) 334 int dif)
@@ -340,7 +340,7 @@ static struct sock *udp_v6_mcast_next(struct sock *sk,
340 sk_for_each_from(s, node) { 340 sk_for_each_from(s, node) {
341 struct inet_sock *inet = inet_sk(s); 341 struct inet_sock *inet = inet_sk(s);
342 342
343 if (sock_net(s) != sock_net(sk)) 343 if (!net_eq(sock_net(s), net))
344 continue; 344 continue;
345 345
346 if (s->sk_hash == num && s->sk_family == PF_INET6) { 346 if (s->sk_hash == num && s->sk_family == PF_INET6) {
@@ -383,14 +383,14 @@ static int __udp6_lib_mcast_deliver(struct net *net, struct sk_buff *skb,
383 read_lock(&udp_hash_lock); 383 read_lock(&udp_hash_lock);
384 sk = sk_head(&udptable[udp_hashfn(net, ntohs(uh->dest))]); 384 sk = sk_head(&udptable[udp_hashfn(net, ntohs(uh->dest))]);
385 dif = inet6_iif(skb); 385 dif = inet6_iif(skb);
386 sk = udp_v6_mcast_next(sk, uh->dest, daddr, uh->source, saddr, dif); 386 sk = udp_v6_mcast_next(net, sk, uh->dest, daddr, uh->source, saddr, dif);
387 if (!sk) { 387 if (!sk) {
388 kfree_skb(skb); 388 kfree_skb(skb);
389 goto out; 389 goto out;
390 } 390 }
391 391
392 sk2 = sk; 392 sk2 = sk;
393 while ((sk2 = udp_v6_mcast_next(sk_next(sk2), uh->dest, daddr, 393 while ((sk2 = udp_v6_mcast_next(net, sk_next(sk2), uh->dest, daddr,
394 uh->source, saddr, dif))) { 394 uh->source, saddr, dif))) {
395 struct sk_buff *buff = skb_clone(skb, GFP_ATOMIC); 395 struct sk_buff *buff = skb_clone(skb, GFP_ATOMIC);
396 if (buff) { 396 if (buff) {