#define UDP_INC_STATS_USER(net, field, is_udplite)           do { (void)net; \
        if (is_udplite) SNMP_INC_STATS_USER(udplite_statistics, field);       \
        else            SNMP_INC_STATS_USER(udp_statistics, field);  }  while(0)
-#define UDP_INC_STATS_BH(field, is_udplite)                           do  {  \
+#define UDP_INC_STATS_BH(net, field, is_udplite)             do { (void)net; \
        if (is_udplite) SNMP_INC_STATS_BH(udplite_statistics, field);         \
        else            SNMP_INC_STATS_BH(udp_statistics, field);    }  while(0)
 
 #define UDPX_INC_STATS_BH(sk, field) \
        do { \
                if ((sk)->sk_family == AF_INET) \
-                       UDP_INC_STATS_BH(field, 0); \
+                       UDP_INC_STATS_BH(sock_net(sk), field, 0); \
                else \
                        UDP6_INC_STATS_BH(field, 0); \
        } while (0);
 #else
-#define UDPX_INC_STATS_BH(sk, field) UDP_INC_STATS_BH(field, 0)
+#define UDPX_INC_STATS_BH(sk, field) UDP_INC_STATS_BH(sock_net(sk), field, 0)
 #endif
 
 /* /proc */
 
 
                        ret = (*up->encap_rcv)(sk, skb);
                        if (ret <= 0) {
-                               UDP_INC_STATS_BH(UDP_MIB_INDATAGRAMS,
+                               UDP_INC_STATS_BH(sock_net(sk),
+                                                UDP_MIB_INDATAGRAMS,
                                                 is_udplite);
                                return -ret;
                        }
        if ((rc = sock_queue_rcv_skb(sk,skb)) < 0) {
                /* Note that an ENOMEM error is charged twice */
                if (rc == -ENOMEM) {
-                       UDP_INC_STATS_BH(UDP_MIB_RCVBUFERRORS, is_udplite);
+                       UDP_INC_STATS_BH(sock_net(sk),
+                                       UDP_MIB_RCVBUFERRORS, is_udplite);
                        atomic_inc(&sk->sk_drops);
                }
                goto drop;
        return 0;
 
 drop:
-       UDP_INC_STATS_BH(UDP_MIB_INERRORS, is_udplite);
+       UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
        kfree_skb(skb);
        return -1;
 }
        struct rtable *rt = (struct rtable*)skb->dst;
        __be32 saddr = ip_hdr(skb)->saddr;
        __be32 daddr = ip_hdr(skb)->daddr;
-       struct net *net;
+       struct net *net = dev_net(skb->dev);
 
        /*
         *  Validate the packet.
        if (udp4_csum_init(skb, uh, proto))
                goto csum_error;
 
-       net = dev_net(skb->dev);
        if (rt->rt_flags & (RTCF_BROADCAST|RTCF_MULTICAST))
                return __udp4_lib_mcast_deliver(net, skb, uh,
                                saddr, daddr, udptable);
        if (udp_lib_checksum_complete(skb))
                goto csum_error;
 
-       UDP_INC_STATS_BH(UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
+       UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
        icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
 
        /*
                       ntohs(uh->dest),
                       ulen);
 drop:
-       UDP_INC_STATS_BH(UDP_MIB_INERRORS, proto == IPPROTO_UDPLITE);
+       UDP_INC_STATS_BH(net, UDP_MIB_INERRORS, proto == IPPROTO_UDPLITE);
        kfree_skb(skb);
        return 0;
 }
                spin_lock_bh(&rcvq->lock);
                while ((skb = skb_peek(rcvq)) != NULL &&
                       udp_lib_checksum_complete(skb)) {
-                       UDP_INC_STATS_BH(UDP_MIB_INERRORS, is_lite);
+                       UDP_INC_STATS_BH(sock_net(sk),
+                                       UDP_MIB_INERRORS, is_lite);
                        __skb_unlink(skb, rcvq);
                        kfree_skb(skb);
                }
 
 #include <net/af_rxrpc.h>
 #include <net/ip.h>
 #include <net/udp.h>
+#include <net/net_namespace.h>
 #include "ar-internal.h"
 
 unsigned long rxrpc_ack_timeout = 1;
        if (skb_checksum_complete(skb)) {
                rxrpc_free_skb(skb);
                rxrpc_put_local(local);
-               UDP_INC_STATS_BH(UDP_MIB_INERRORS, 0);
+               UDP_INC_STATS_BH(&init_net, UDP_MIB_INERRORS, 0);
                _leave(" [CSUM failed]");
                return;
        }
 
-       UDP_INC_STATS_BH(UDP_MIB_INDATAGRAMS, 0);
+       UDP_INC_STATS_BH(&init_net, UDP_MIB_INDATAGRAMS, 0);
 
        /* the socket buffer we have is owned by UDP, with UDP's data all over
         * it, but we really want our own */