diff options
-rw-r--r-- | include/net/udp.h | 4 | ||||
-rw-r--r-- | net/ipv6/udp.c | 13 |
2 files changed, 9 insertions, 8 deletions
diff --git a/include/net/udp.h b/include/net/udp.h index bb5b9ec85638..3e551592aa76 100644 --- a/include/net/udp.h +++ b/include/net/udp.h | |||
@@ -165,7 +165,7 @@ DECLARE_SNMP_STAT(struct udp_mib, udplite_stats_in6); | |||
165 | if (is_udplite) SNMP_INC_STATS_BH(udplite_statistics, field); \ | 165 | if (is_udplite) SNMP_INC_STATS_BH(udplite_statistics, field); \ |
166 | else SNMP_INC_STATS_BH(udp_statistics, field); } while(0) | 166 | else SNMP_INC_STATS_BH(udp_statistics, field); } while(0) |
167 | 167 | ||
168 | #define UDP6_INC_STATS_BH(field, is_udplite) do { \ | 168 | #define UDP6_INC_STATS_BH(net, field, is_udplite) do { (void)net; \ |
169 | if (is_udplite) SNMP_INC_STATS_BH(udplite_stats_in6, field); \ | 169 | if (is_udplite) SNMP_INC_STATS_BH(udplite_stats_in6, field); \ |
170 | else SNMP_INC_STATS_BH(udp_stats_in6, field); } while(0) | 170 | else SNMP_INC_STATS_BH(udp_stats_in6, field); } while(0) |
171 | #define UDP6_INC_STATS_USER(net, field, is_udplite) do { (void)net; \ | 171 | #define UDP6_INC_STATS_USER(net, field, is_udplite) do { (void)net; \ |
@@ -178,7 +178,7 @@ DECLARE_SNMP_STAT(struct udp_mib, udplite_stats_in6); | |||
178 | if ((sk)->sk_family == AF_INET) \ | 178 | if ((sk)->sk_family == AF_INET) \ |
179 | UDP_INC_STATS_BH(sock_net(sk), field, 0); \ | 179 | UDP_INC_STATS_BH(sock_net(sk), field, 0); \ |
180 | else \ | 180 | else \ |
181 | UDP6_INC_STATS_BH(field, 0); \ | 181 | UDP6_INC_STATS_BH(sock_net(sk), field, 0); \ |
182 | } while (0); | 182 | } while (0); |
183 | #else | 183 | #else |
184 | #define UDPX_INC_STATS_BH(sk, field) UDP_INC_STATS_BH(sock_net(sk), field, 0) | 184 | #define UDPX_INC_STATS_BH(sk, field) UDP_INC_STATS_BH(sock_net(sk), field, 0) |
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 833f715e4bff..d1477b350f76 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c | |||
@@ -299,7 +299,8 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb) | |||
299 | if ((rc = sock_queue_rcv_skb(sk,skb)) < 0) { | 299 | if ((rc = sock_queue_rcv_skb(sk,skb)) < 0) { |
300 | /* Note that an ENOMEM error is charged twice */ | 300 | /* Note that an ENOMEM error is charged twice */ |
301 | if (rc == -ENOMEM) { | 301 | if (rc == -ENOMEM) { |
302 | UDP6_INC_STATS_BH(UDP_MIB_RCVBUFERRORS, is_udplite); | 302 | UDP6_INC_STATS_BH(sock_net(sk), |
303 | UDP_MIB_RCVBUFERRORS, is_udplite); | ||
303 | atomic_inc(&sk->sk_drops); | 304 | atomic_inc(&sk->sk_drops); |
304 | } | 305 | } |
305 | goto drop; | 306 | goto drop; |
@@ -307,7 +308,7 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb) | |||
307 | 308 | ||
308 | return 0; | 309 | return 0; |
309 | drop: | 310 | drop: |
310 | UDP6_INC_STATS_BH(UDP_MIB_INERRORS, is_udplite); | 311 | UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); |
311 | kfree_skb(skb); | 312 | kfree_skb(skb); |
312 | return -1; | 313 | return -1; |
313 | } | 314 | } |
@@ -439,7 +440,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[], | |||
439 | struct net_device *dev = skb->dev; | 440 | struct net_device *dev = skb->dev; |
440 | struct in6_addr *saddr, *daddr; | 441 | struct in6_addr *saddr, *daddr; |
441 | u32 ulen = 0; | 442 | u32 ulen = 0; |
442 | struct net *net; | 443 | struct net *net = dev_net(skb->dev); |
443 | 444 | ||
444 | if (!pskb_may_pull(skb, sizeof(struct udphdr))) | 445 | if (!pskb_may_pull(skb, sizeof(struct udphdr))) |
445 | goto short_packet; | 446 | goto short_packet; |
@@ -474,7 +475,6 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[], | |||
474 | if (udp6_csum_init(skb, uh, proto)) | 475 | if (udp6_csum_init(skb, uh, proto)) |
475 | goto discard; | 476 | goto discard; |
476 | 477 | ||
477 | net = dev_net(skb->dev); | ||
478 | /* | 478 | /* |
479 | * Multicast receive code | 479 | * Multicast receive code |
480 | */ | 480 | */ |
@@ -497,7 +497,8 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[], | |||
497 | 497 | ||
498 | if (udp_lib_checksum_complete(skb)) | 498 | if (udp_lib_checksum_complete(skb)) |
499 | goto discard; | 499 | goto discard; |
500 | UDP6_INC_STATS_BH(UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); | 500 | UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, |
501 | proto == IPPROTO_UDPLITE); | ||
501 | 502 | ||
502 | icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0, dev); | 503 | icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0, dev); |
503 | 504 | ||
@@ -522,7 +523,7 @@ short_packet: | |||
522 | ulen, skb->len); | 523 | ulen, skb->len); |
523 | 524 | ||
524 | discard: | 525 | discard: |
525 | UDP6_INC_STATS_BH(UDP_MIB_INERRORS, proto == IPPROTO_UDPLITE); | 526 | UDP6_INC_STATS_BH(net, UDP_MIB_INERRORS, proto == IPPROTO_UDPLITE); |
526 | kfree_skb(skb); | 527 | kfree_skb(skb); |
527 | return 0; | 528 | return 0; |
528 | } | 529 | } |