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: [email protected] Cc: Eric W. Biederman <[email protected]> Signed-off-by: Richard Guy Briggs <[email protected]> --- 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 -- Linux-audit mailing list [email protected] https://www.redhat.com/mailman/listinfo/linux-audit
