git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
[pandora-kernel.git]
/
net
/
core
/
net_namespace.c
diff --git
a/net/core/net_namespace.c
b/net/core/net_namespace.c
index
3f86026
..
2e2dce6
100644
(file)
--- a/
net/core/net_namespace.c
+++ b/
net/core/net_namespace.c
@@
-27,14
+27,6
@@
EXPORT_SYMBOL(init_net);
#define INITIAL_NET_GEN_PTRS 13 /* +1 for len +2 for rcu_head */
#define INITIAL_NET_GEN_PTRS 13 /* +1 for len +2 for rcu_head */
-static void net_generic_release(struct rcu_head *rcu)
-{
- struct net_generic *ng;
-
- ng = container_of(rcu, struct net_generic, rcu);
- kfree(ng);
-}
-
static int net_assign_generic(struct net *net, int id, void *data)
{
struct net_generic *ng, *old_ng;
static int net_assign_generic(struct net *net, int id, void *data)
{
struct net_generic *ng, *old_ng;
@@
-68,7
+60,7
@@
static int net_assign_generic(struct net *net, int id, void *data)
memcpy(&ng->ptr, &old_ng->ptr, old_ng->len * sizeof(void*));
rcu_assign_pointer(net->gen, ng);
memcpy(&ng->ptr, &old_ng->ptr, old_ng->len * sizeof(void*));
rcu_assign_pointer(net->gen, ng);
-
call_rcu(&old_ng->rcu, net_generic_release
);
+
kfree_rcu(old_ng, rcu
);
assign:
ng->ptr[id - 1] = data;
return 0;
assign:
ng->ptr[id - 1] = data;
return 0;
@@
-216,11
+208,14
@@
static void net_free(struct net *net)
kmem_cache_free(net_cachep, net);
}
kmem_cache_free(net_cachep, net);
}
-st
atic struct net *net_create(void
)
+st
ruct net *copy_net_ns(unsigned long flags, struct net *old_net
)
{
struct net *net;
int rv;
{
struct net *net;
int rv;
+ if (!(flags & CLONE_NEWNET))
+ return get_net(old_net);
+
net = net_alloc();
if (!net)
return ERR_PTR(-ENOMEM);
net = net_alloc();
if (!net)
return ERR_PTR(-ENOMEM);
@@
-239,13
+234,6
@@
static struct net *net_create(void)
return net;
}
return net;
}
-struct net *copy_net_ns(unsigned long flags, struct net *old_net)
-{
- if (!(flags & CLONE_NEWNET))
- return get_net(old_net);
- return net_create();
-}
-
static DEFINE_SPINLOCK(cleanup_list_lock);
static LIST_HEAD(cleanup_list); /* Must hold cleanup_list_lock to touch */
static DEFINE_SPINLOCK(cleanup_list_lock);
static LIST_HEAD(cleanup_list); /* Must hold cleanup_list_lock to touch */