lkml.org 
[lkml]   [2010]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[033/145] Switch proc/self to nd_set_link()
    2.6.32-stable review patch.  If anyone has any objections, please let me know.

    ----------------
    From: Al Viro <viro@zeniv.linux.org.uk>

    commit 7fee4868be91e71a3ee8e57289ebf5e10a12297e upstream.

    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    fs/proc/base.c | 24 +++++++++++++++++++-----
    1 file changed, 19 insertions(+), 5 deletions(-)

    --- a/fs/proc/base.c
    +++ b/fs/proc/base.c
    @@ -2304,16 +2304,30 @@ static void *proc_self_follow_link(struc
    {
    struct pid_namespace *ns = dentry->d_sb->s_fs_info;
    pid_t tgid = task_tgid_nr_ns(current, ns);
    - char tmp[PROC_NUMBUF];
    - if (!tgid)
    - return ERR_PTR(-ENOENT);
    - sprintf(tmp, "%d", task_tgid_nr_ns(current, ns));
    - return ERR_PTR(vfs_follow_link(nd,tmp));
    + char *name = ERR_PTR(-ENOENT);
    + if (tgid) {
    + name = __getname();
    + if (!name)
    + name = ERR_PTR(-ENOMEM);
    + else
    + sprintf(name, "%d", tgid);
    + }
    + nd_set_link(nd, name);
    + return NULL;
    +}
    +
    +static void proc_self_put_link(struct dentry *dentry, struct nameidata *nd,
    + void *cookie)
    +{
    + char *s = nd_get_link(nd);
    + if (!IS_ERR(s))
    + __putname(s);
    }

    static const struct inode_operations proc_self_inode_operations = {
    .readlink = proc_self_readlink,
    .follow_link = proc_self_follow_link,
    + .put_link = proc_self_put_link,
    };

    /*



    \
     
     \ /
      Last update: 2010-03-13 02:01    [W:4.353 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site