The patch titled
     pid namespaces: define and use task_active_pid_ns() wrapper
has been removed from the -mm tree.  Its filename was
     pid-namespaces-define-and-use-task_active_pid_ns-wrapper.patch

This patch was dropped because it was merged into mainline or a subsystem tree

------------------------------------------------------
Subject: pid namespaces: define and use task_active_pid_ns() wrapper
From: Sukadev Bhattiprolu <[EMAIL PROTECTED]>

With multiple pid namespaces, a process is known by some pid_t in every
ancestor pid namespace.  Every time the process forks, the child process also
gets a pid_t in every ancestor pid namespace.

While a process is visible in >=1 pid namespaces, it can see pid_t's in only
one pid namespace.  We call this pid namespace it's "active pid namespace",
and it is always the youngest pid namespace in which the process is known.

This patch defines and uses a wrapper to find the active pid namespace of a
process.  The implementation of the wrapper will be changed in when support
for multiple pid namespaces are added.

Changelog:
        2.6.22-rc4-mm2-pidns1:
        - [Pavel Emelianov, Alexey Dobriyan] Back out the change to use
          task_active_pid_ns() in child_reaper() since task->nsproxy
          can be NULL during task exit (so child_reaper() continues to
          use init_pid_ns).

          to implement child_reaper() since init_pid_ns.child_reaper to
          implement child_reaper() since tsk->nsproxy can be NULL during exit.

        2.6.21-rc6-mm1:
        - Rename task_pid_ns() to task_active_pid_ns() to reflect that a
          process can have multiple pid namespaces.

Signed-off-by: Sukadev Bhattiprolu <[EMAIL PROTECTED]>
Acked-by: Pavel Emelianov <[EMAIL PROTECTED]>
Cc: Eric W. Biederman <[EMAIL PROTECTED]>
Cc: Cedric Le Goater <[EMAIL PROTECTED]>
Cc: Dave Hansen <[EMAIL PROTECTED]>
Cc: Serge Hallyn <[EMAIL PROTECTED]>
Cc: Herbert Poetzel <[EMAIL PROTECTED]>
Cc: Kirill Korotaev <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---

 fs/exec.c                     |    2 +-
 fs/proc/proc_misc.c           |    3 ++-
 include/linux/pid_namespace.h |    5 +++++
 kernel/nsproxy.c              |    2 +-
 kernel/pid.c                  |    4 ++--
 5 files changed, 11 insertions(+), 5 deletions(-)

diff -puN fs/exec.c~pid-namespaces-define-and-use-task_active_pid_ns-wrapper 
fs/exec.c
--- a/fs/exec.c~pid-namespaces-define-and-use-task_active_pid_ns-wrapper
+++ a/fs/exec.c
@@ -776,7 +776,7 @@ static int de_thread(struct task_struct 
         * so it is safe to do it under read_lock.
         */
        if (unlikely(tsk->group_leader == child_reaper(tsk)))
-               tsk->nsproxy->pid_ns->child_reaper = tsk;
+               task_active_pid_ns(tsk)->child_reaper = tsk;
 
        zap_other_threads(tsk);
        read_unlock(&tasklist_lock);
diff -puN 
fs/proc/proc_misc.c~pid-namespaces-define-and-use-task_active_pid_ns-wrapper 
fs/proc/proc_misc.c
--- 
a/fs/proc/proc_misc.c~pid-namespaces-define-and-use-task_active_pid_ns-wrapper
+++ a/fs/proc/proc_misc.c
@@ -91,7 +91,8 @@ static int loadavg_read_proc(char *page,
                LOAD_INT(a), LOAD_FRAC(a),
                LOAD_INT(b), LOAD_FRAC(b),
                LOAD_INT(c), LOAD_FRAC(c),
-               nr_running(), nr_threads, current->nsproxy->pid_ns->last_pid);
+               nr_running(), nr_threads,
+               task_active_pid_ns(current)->last_pid);
        return proc_calc_metrics(page, start, off, count, eof, len);
 }
 
diff -puN 
include/linux/pid_namespace.h~pid-namespaces-define-and-use-task_active_pid_ns-wrapper
 include/linux/pid_namespace.h
--- 
a/include/linux/pid_namespace.h~pid-namespaces-define-and-use-task_active_pid_ns-wrapper
+++ a/include/linux/pid_namespace.h
@@ -39,6 +39,11 @@ static inline void put_pid_ns(struct pid
        kref_put(&ns->kref, free_pid_ns);
 }
 
+static inline struct pid_namespace *task_active_pid_ns(struct task_struct *tsk)
+{
+       return tsk->nsproxy->pid_ns;
+}
+
 static inline struct task_struct *child_reaper(struct task_struct *tsk)
 {
        return init_pid_ns.child_reaper;
diff -puN 
kernel/nsproxy.c~pid-namespaces-define-and-use-task_active_pid_ns-wrapper 
kernel/nsproxy.c
--- a/kernel/nsproxy.c~pid-namespaces-define-and-use-task_active_pid_ns-wrapper
+++ a/kernel/nsproxy.c
@@ -87,7 +87,7 @@ static struct nsproxy *create_new_namesp
                goto out_ipc;
        }
 
-       new_nsp->pid_ns = copy_pid_ns(flags, tsk->nsproxy->pid_ns);
+       new_nsp->pid_ns = copy_pid_ns(flags, task_active_pid_ns(tsk));
        if (IS_ERR(new_nsp->pid_ns)) {
                err = PTR_ERR(new_nsp->pid_ns);
                goto out_pid;
diff -puN kernel/pid.c~pid-namespaces-define-and-use-task_active_pid_ns-wrapper 
kernel/pid.c
--- a/kernel/pid.c~pid-namespaces-define-and-use-task_active_pid_ns-wrapper
+++ a/kernel/pid.c
@@ -214,7 +214,7 @@ struct pid *alloc_pid(void)
        int nr = -1;
        struct pid_namespace *ns;
 
-       ns = current->nsproxy->pid_ns;
+       ns = task_active_pid_ns(current);
        pid = kmem_cache_alloc(ns->pid_cachep, GFP_KERNEL);
        if (!pid)
                goto out;
@@ -364,7 +364,7 @@ struct pid *find_ge_pid(int nr)
                pid = find_pid(nr);
                if (pid)
                        break;
-               nr = next_pidmap(current->nsproxy->pid_ns, nr);
+               nr = next_pidmap(task_active_pid_ns(current), nr);
        } while (nr > 0);
 
        return pid;
_

Patches currently in -mm which might be from [EMAIL PROTECTED] are

origin.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to