diff options
author | Eric Paris <eparis@redhat.com> | 2014-03-07 11:41:32 -0500 |
---|---|---|
committer | Eric Paris <eparis@redhat.com> | 2014-03-07 11:41:32 -0500 |
commit | b7d3622a39fde7658170b7f3cf6c6889bb8db30d (patch) | |
tree | 64f4e781ecb2a85d675e234072b988560bcd25f1 /kernel/pid_namespace.c | |
parent | f3411cb2b2e396a41ed3a439863f028db7140a34 (diff) | |
parent | d8ec26d7f8287f5788a494f56e8814210f0e64be (diff) |
Merge tag 'v3.13' into for-3.15
Linux 3.13
Conflicts:
include/net/xfrm.h
Simple merge where v3.13 removed 'extern' from definitions and the audit
tree did s/u32/unsigned int/ to the same definitions.
Diffstat (limited to 'kernel/pid_namespace.c')
-rw-r--r-- | kernel/pid_namespace.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c index 42086551a24a..06c62de9c711 100644 --- a/kernel/pid_namespace.c +++ b/kernel/pid_namespace.c | |||
@@ -132,6 +132,12 @@ out: | |||
132 | return ERR_PTR(err); | 132 | return ERR_PTR(err); |
133 | } | 133 | } |
134 | 134 | ||
135 | static void delayed_free_pidns(struct rcu_head *p) | ||
136 | { | ||
137 | kmem_cache_free(pid_ns_cachep, | ||
138 | container_of(p, struct pid_namespace, rcu)); | ||
139 | } | ||
140 | |||
135 | static void destroy_pid_namespace(struct pid_namespace *ns) | 141 | static void destroy_pid_namespace(struct pid_namespace *ns) |
136 | { | 142 | { |
137 | int i; | 143 | int i; |
@@ -140,7 +146,7 @@ static void destroy_pid_namespace(struct pid_namespace *ns) | |||
140 | for (i = 0; i < PIDMAP_ENTRIES; i++) | 146 | for (i = 0; i < PIDMAP_ENTRIES; i++) |
141 | kfree(ns->pidmap[i].page); | 147 | kfree(ns->pidmap[i].page); |
142 | put_user_ns(ns->user_ns); | 148 | put_user_ns(ns->user_ns); |
143 | kmem_cache_free(pid_ns_cachep, ns); | 149 | call_rcu(&ns->rcu, delayed_free_pidns); |
144 | } | 150 | } |
145 | 151 | ||
146 | struct pid_namespace *copy_pid_ns(unsigned long flags, | 152 | struct pid_namespace *copy_pid_ns(unsigned long flags, |