aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/net_namespace.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-09 18:07:57 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-09 18:07:57 -0500
commitc5b875e354a54e2b5ba24eecae69bf94e025edd5 (patch)
tree0446a68d99ad50305ab78835456d9faa62be5948 /net/core/net_namespace.c
parenteae1920a21b4f87e89cea802e7df39442b119617 (diff)
parentc3d8d1e30cace31fed6186a4b8c6b1401836d89c (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (44 commits) [NETLINK]: Fix unicast timeouts [INET]: Remove per bucket rwlock in tcp/dccp ehash table. [IPVS]: Synchronize closing of Connections [IPVS]: Bind connections on stanby if the destination exists [NET]: Remove Documentation/networking/pt.txt [NET]: Remove Documentation/networking/routing.txt [NET]: Remove Documentation/networking/ncsa-telnet [NET]: Remove comx driver docs. [NET]: Remove Documentation/networking/Configurable [NET]: Clean proto_(un)register from in-code ifdefs [IPSEC]: Fix crypto_alloc_comp error checking [VLAN]: Fix SET_VLAN_INGRESS_PRIORITY_CMD ioctl [NETNS]: Fix compiler error in net_namespace.c [TTY]: Use tty_mode_ioctl() in network drivers. [TTY]: Fix network driver interactions with TCGET/SET calls. [PKT_SCHED] CLS_U32: Fix endianness problem with u32 classifier hash masks. [NET]: Removing duplicit #includes [NET]: Let USB_USBNET always select MII. [RRUNNER]: Do not muck with sysctl_{r,w}mem_max [DLM] lowcomms: Do not muck with sysctl_rmem_max. ...
Diffstat (limited to 'net/core/net_namespace.c')
-rw-r--r--net/core/net_namespace.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index e9f0964ce70b..3f6d37deac45 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -64,6 +64,20 @@ static struct net *net_alloc(void)
64 return kmem_cache_zalloc(net_cachep, GFP_KERNEL); 64 return kmem_cache_zalloc(net_cachep, GFP_KERNEL);
65} 65}
66 66
67static void net_free(struct net *net)
68{
69 if (!net)
70 return;
71
72 if (unlikely(atomic_read(&net->use_count) != 0)) {
73 printk(KERN_EMERG "network namespace not free! Usage: %d\n",
74 atomic_read(&net->use_count));
75 return;
76 }
77
78 kmem_cache_free(net_cachep, net);
79}
80
67struct net *copy_net_ns(unsigned long flags, struct net *old_net) 81struct net *copy_net_ns(unsigned long flags, struct net *old_net)
68{ 82{
69 struct net *new_net = NULL; 83 struct net *new_net = NULL;
@@ -100,20 +114,6 @@ out:
100 return new_net; 114 return new_net;
101} 115}
102 116
103static void net_free(struct net *net)
104{
105 if (!net)
106 return;
107
108 if (unlikely(atomic_read(&net->use_count) != 0)) {
109 printk(KERN_EMERG "network namespace not free! Usage: %d\n",
110 atomic_read(&net->use_count));
111 return;
112 }
113
114 kmem_cache_free(net_cachep, net);
115}
116
117static void cleanup_net(struct work_struct *work) 117static void cleanup_net(struct work_struct *work)
118{ 118{
119 struct pernet_operations *ops; 119 struct pernet_operations *ops;