Added the functions task_ppid_nr_ns() and task_ppid_nr() to abstract the lookup of the PPID (real_parent's pid_t) of a process, including rcu locking, in the arbitrary and init_pid_ns. This provides an alternative to sys_getppid(), which is relative to the child process' pid namespace.
(informed by ebiederman's 6c621b7e) Cc: sta...@vger.kernel.org Cc: Eric W. Biederman <ebied...@xmission.com> Signed-off-by: Richard Guy Briggs <r...@redhat.com> --- include/linux/sched.h | 24 ++++++++++++++++++++++++ 1 files changed, 24 insertions(+), 0 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index e27baee..7bf5ab2 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1497,6 +1497,30 @@ static inline pid_t task_tgid_vnr(struct task_struct *tsk) } +static inline pid_t task_ppid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) +{ + pid_t pid; + + rcu_read_lock(); + pid = pid_alive(tsk) ? + task_pid_nr_ns(rcu_dereference(tsk->real_parent), ns) : 0; + rcu_read_unlock(); + + return pid; +} + +static inline pid_t task_ppid_nr(struct task_struct *tsk) +{ + pid_t pid; + + rcu_read_lock(); + pid = pid_alive(tsk) ? + task_pid_nr(rcu_dereference(tsk->real_parent)) : 0; + rcu_read_unlock(); + + return pid; +} + static inline pid_t task_pgrp_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) { -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/