lkml.org 
[lkml]   [2007]   [Nov]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] proc: Proper pidns handling for /proc/self
    Date

    Currently if you access a /proc that is not mounted with your
    processes current pid namespace /proc/self will point at a completely
    different process. Ouch!.

    This patch fixes /proc/self to point to the current process if
    it is available in the particular mount of /proc or to return
    -ENOENT if the current process is not visible.

    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    ---
    fs/proc/base.c | 12 ++++++++++--
    1 files changed, 10 insertions(+), 2 deletions(-)

    diff --git a/fs/proc/base.c b/fs/proc/base.c
    index 7e8eca4..34a1821 100644
    --- a/fs/proc/base.c
    +++ b/fs/proc/base.c
    @@ -2049,15 +2049,23 @@ static const struct file_operations proc_coredump_filter_operations = {
    static int proc_self_readlink(struct dentry *dentry, char __user *buffer,
    int buflen)
    {
    + struct pid_namespace *ns = dentry->d_sb->s_fs_info;
    + pid_t tgid = task_tgid_nr_ns(current, ns);
    char tmp[PROC_NUMBUF];
    - sprintf(tmp, "%d", task_tgid_vnr(current));
    + if (!tgid)
    + return -ENOENT;
    + sprintf(tmp, "%d", tgid);
    return vfs_readlink(dentry,buffer,buflen,tmp);
    }

    static void *proc_self_follow_link(struct dentry *dentry, struct nameidata *nd)
    {
    + struct pid_namespace *ns = dentry->d_sb->s_fs_info;
    + pid_t tgid = task_tgid_nr_ns(current, ns);
    char tmp[PROC_NUMBUF];
    - sprintf(tmp, "%d", task_tgid_vnr(current));
    + if (!tgid)
    + return ERR_PTR(-ENOENT);
    + sprintf(tmp, "%d", task_tgid_nr_ns(current, ns));
    return ERR_PTR(vfs_follow_link(nd,tmp));
    }

    --
    1.5.3.rc6.17.g1911
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-11-19 23:33    [W:0.023 / U:59.312 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site