[NETNS]: Add netns refcnt debug for network devices. dev_set_net is called for - just allocated devices - devices moving from one namespace to another release_net has proper check inside to distinguish these cases. Signed-off-by: Denis V. Lunev <den@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 8b17ed4..7c1d446 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h
@@ -758,7 +758,8 @@ void dev_net_set(struct net_device *dev, struct net *net) { #ifdef CONFIG_NET_NS - dev->nd_net = net; + release_net(dev->nd_net); + dev->nd_net = hold_net(net); #endif }
diff --git a/net/core/dev.c b/net/core/dev.c index 7aa0112..77530e9 100644 --- a/net/core/dev.c +++ b/net/core/dev.c
@@ -4042,6 +4042,8 @@ */ void free_netdev(struct net_device *dev) { + release_net(dev_net(dev)); + /* Compatibility with error handling in drivers */ if (dev->reg_state == NETREG_UNINITIALIZED) { kfree((char *)dev - dev->padded);