aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/udp.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r--net/ipv6/udp.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 6e4a822ba651..80fb72c48976 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -353,8 +353,9 @@ static struct sock *udp_v6_mcast_next(struct sock *sk,
353 * Note: called only from the BH handler context, 353 * Note: called only from the BH handler context,
354 * so we don't need to lock the hashes. 354 * so we don't need to lock the hashes.
355 */ 355 */
356static int __udp6_lib_mcast_deliver(struct sk_buff *skb, struct in6_addr *saddr, 356static int __udp6_lib_mcast_deliver(struct net *net, struct sk_buff *skb,
357 struct in6_addr *daddr, struct hlist_head udptable[]) 357 struct in6_addr *saddr, struct in6_addr *daddr,
358 struct hlist_head udptable[])
358{ 359{
359 struct sock *sk, *sk2; 360 struct sock *sk, *sk2;
360 const struct udphdr *uh = udp_hdr(skb); 361 const struct udphdr *uh = udp_hdr(skb);
@@ -435,6 +436,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[],
435 struct net_device *dev = skb->dev; 436 struct net_device *dev = skb->dev;
436 struct in6_addr *saddr, *daddr; 437 struct in6_addr *saddr, *daddr;
437 u32 ulen = 0; 438 u32 ulen = 0;
439 struct net *net;
438 440
439 if (!pskb_may_pull(skb, sizeof(struct udphdr))) 441 if (!pskb_may_pull(skb, sizeof(struct udphdr)))
440 goto short_packet; 442 goto short_packet;
@@ -469,11 +471,13 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[],
469 if (udp6_csum_init(skb, uh, proto)) 471 if (udp6_csum_init(skb, uh, proto))
470 goto discard; 472 goto discard;
471 473
474 net = dev_net(skb->dev);
472 /* 475 /*
473 * Multicast receive code 476 * Multicast receive code
474 */ 477 */
475 if (ipv6_addr_is_multicast(daddr)) 478 if (ipv6_addr_is_multicast(daddr))
476 return __udp6_lib_mcast_deliver(skb, saddr, daddr, udptable); 479 return __udp6_lib_mcast_deliver(net, skb,
480 saddr, daddr, udptable);
477 481
478 /* Unicast */ 482 /* Unicast */
479 483
@@ -481,7 +485,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[],
481 * check socket cache ... must talk to Alan about his plans 485 * check socket cache ... must talk to Alan about his plans
482 * for sock caches... i'll skip this for now. 486 * for sock caches... i'll skip this for now.
483 */ 487 */
484 sk = __udp6_lib_lookup(dev_net(skb->dev), saddr, uh->source, 488 sk = __udp6_lib_lookup(net, saddr, uh->source,
485 daddr, uh->dest, inet6_iif(skb), udptable); 489 daddr, uh->dest, inet6_iif(skb), udptable);
486 490
487 if (sk == NULL) { 491 if (sk == NULL) {