lkml.org 
[lkml]   [2019]   [Oct]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 1/2] pidfd: show pids for nested pid namespaces in fdinfo
    Date
    From: Christian Kellner <christian@kellner.me>

    The fdinfo file for a process file descriptor already contains the
    pid of the process in the callers namespaces. Additionally, if pid
    namespaces are configured, show the process ids of the process in
    all nested namespaces in the same format as in the procfs status
    file, i.e. "NSPid:\t%d\%d...". This allows the easy identification
    of the processes in nested namespaces.

    Signed-off-by: Christian Kellner <christian@kellner.me>
    ---

    Changes in v2:
    - Moved into separate function to avoid multiple ifdefs as suggested
    by Michal Hocko

    kernel/fork.c | 15 +++++++++++++++
    1 file changed, 15 insertions(+)

    diff --git a/kernel/fork.c b/kernel/fork.c
    index 5a0fd518e04e..f7a59ef046e9 100644
    --- a/kernel/fork.c
    +++ b/kernel/fork.c
    @@ -1681,12 +1681,27 @@ static int pidfd_release(struct inode *inode, struct file *file)
    }

    #ifdef CONFIG_PROC_FS
    +static void pidfd_nspid(struct seq_file *m, struct pid *pid)
    +{
    +#ifdef CONFIG_PID_NS
    + struct pid_namespace *ns = proc_pid_ns(file_inode(m->file));
    + int i;
    +
    + seq_puts(m, "\nNSpid:");
    + for (i = ns->level; i <= pid->level; i++) {
    + ns = pid->numbers[i].ns;
    + seq_put_decimal_ull(m, "\t", pid_nr_ns(pid, ns));
    + }
    +#endif
    +}
    +
    static void pidfd_show_fdinfo(struct seq_file *m, struct file *f)
    {
    struct pid_namespace *ns = proc_pid_ns(file_inode(m->file));
    struct pid *pid = f->private_data;

    seq_put_decimal_ull(m, "Pid:\t", pid_nr_ns(pid, ns));
    + pidfd_nspid(m, pid);
    seq_putc(m, '\n');
    }
    #endif
    --
    2.21.0
    \
     
     \ /
      Last update: 2019-10-09 18:09    [W:2.027 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site