]> err.no Git - linux-2.6/blobdiff - fs/proc/base.c
pid namespaces: initialize the namespace's proc_mnt
[linux-2.6] / fs / proc / base.c
index 50e149e08d962fbeda12fe35c3c65dc1e358cb19..21510c9aa89cb51688581c982547c967539c0e90 100644 (file)
@@ -2259,8 +2259,26 @@ out:
 
 void proc_flush_task(struct task_struct *task)
 {
-       proc_flush_task_mnt(proc_mnt, task->pid,
-                       thread_group_leader(task) ? 0 : task->tgid);
+       int i, leader;
+       struct pid *pid, *tgid;
+       struct upid *upid;
+
+       leader = thread_group_leader(task);
+       proc_flush_task_mnt(proc_mnt, task->pid, leader ? task->tgid : 0);
+       pid = task_pid(task);
+       if (pid->level == 0)
+               return;
+
+       tgid = task_tgid(task);
+       for (i = 1; i <= pid->level; i++) {
+               upid = &pid->numbers[i];
+               proc_flush_task_mnt(upid->ns->proc_mnt, upid->nr,
+                               leader ? 0 : tgid->numbers[i].nr);
+       }
+
+       upid = &pid->numbers[pid->level];
+       if (upid->nr == 1)
+               pid_ns_release_proc(upid->ns);
 }
 
 static struct dentry *proc_pid_instantiate(struct inode *dir,