diff options
Diffstat (limited to 'fs/proc')
-rw-r--r-- | fs/proc/base.c | 4 | ||||
-rw-r--r-- | fs/proc/root.c | 16 |
2 files changed, 20 insertions, 0 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c index 5e0c6a1ce8b3..21510c9aa89c 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
@@ -2275,6 +2275,10 @@ void proc_flush_task(struct task_struct *task) | |||
2275 | proc_flush_task_mnt(upid->ns->proc_mnt, upid->nr, | 2275 | proc_flush_task_mnt(upid->ns->proc_mnt, upid->nr, |
2276 | leader ? 0 : tgid->numbers[i].nr); | 2276 | leader ? 0 : tgid->numbers[i].nr); |
2277 | } | 2277 | } |
2278 | |||
2279 | upid = &pid->numbers[pid->level]; | ||
2280 | if (upid->nr == 1) | ||
2281 | pid_ns_release_proc(upid->ns); | ||
2278 | } | 2282 | } |
2279 | 2283 | ||
2280 | static struct dentry *proc_pid_instantiate(struct inode *dir, | 2284 | static struct dentry *proc_pid_instantiate(struct inode *dir, |
diff --git a/fs/proc/root.c b/fs/proc/root.c index 94e9d734384e..ec9cb3b6c93b 100644 --- a/fs/proc/root.c +++ b/fs/proc/root.c | |||
@@ -212,6 +212,22 @@ struct proc_dir_entry proc_root = { | |||
212 | .parent = &proc_root, | 212 | .parent = &proc_root, |
213 | }; | 213 | }; |
214 | 214 | ||
215 | int pid_ns_prepare_proc(struct pid_namespace *ns) | ||
216 | { | ||
217 | struct vfsmount *mnt; | ||
218 | |||
219 | mnt = kern_mount_data(&proc_fs_type, ns); | ||
220 | if (IS_ERR(mnt)) | ||
221 | return PTR_ERR(mnt); | ||
222 | |||
223 | return 0; | ||
224 | } | ||
225 | |||
226 | void pid_ns_release_proc(struct pid_namespace *ns) | ||
227 | { | ||
228 | mntput(ns->proc_mnt); | ||
229 | } | ||
230 | |||
215 | EXPORT_SYMBOL(proc_symlink); | 231 | EXPORT_SYMBOL(proc_symlink); |
216 | EXPORT_SYMBOL(proc_mkdir); | 232 | EXPORT_SYMBOL(proc_mkdir); |
217 | EXPORT_SYMBOL(create_proc_entry); | 233 | EXPORT_SYMBOL(create_proc_entry); |