lkml.org 
[lkml]   [2012]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/16] vfs: do_last() common post lookup
    Date
    From: Miklos Szeredi <mszeredi@suse.cz>

    Now the post lookup code can be shared between O_CREAT and plain opens since
    they are essentially the same.

    Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
    ---
    fs/namei.c | 33 ++-------------------------------
    1 files changed, 2 insertions(+), 31 deletions(-)

    diff --git a/fs/namei.c b/fs/namei.c
    index 6e94c14..f7e7d76 100644
    --- a/fs/namei.c
    +++ b/fs/namei.c
    @@ -2251,37 +2251,7 @@ static struct file *do_last(struct nameidata *nd, struct path *path,

    inode = path->dentry->d_inode;
    }
    - error = -ENOENT;
    - if (!inode) {
    - path_to_nameidata(path, nd);
    - goto exit;
    - }
    -
    - if (should_follow_link(inode, !symlink_ok)) {
    - if (nd->flags & LOOKUP_RCU) {
    - if (unlikely(unlazy_walk(nd, path->dentry))) {
    - error = -ECHILD;
    - goto exit;
    - }
    - }
    - BUG_ON(inode != path->dentry->d_inode);
    - return NULL;
    - }
    - path_to_nameidata(path, nd);
    - nd->inode = inode;
    -
    - /* sayonara */
    - error = complete_walk(nd);
    - if (error)
    - return ERR_PTR(error);
    -
    - error = -ENOTDIR;
    - if (nd->flags & LOOKUP_DIRECTORY) {
    - if (!nd->inode->i_op->lookup)
    - goto exit;
    - }
    - audit_inode(pathname, nd->path.dentry);
    - goto ok;
    + goto finish_lookup;
    }

    /* create side of things */
    @@ -2361,6 +2331,7 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
    nd->flags |= LOOKUP_JUMPED;

    inode = path->dentry->d_inode;
    +finish_lookup:
    error = -ENOENT;
    if (!inode) {
    path_to_nameidata(path, nd);
    --
    1.7.7


    \
     
     \ /
      Last update: 2012-04-25 14:49    [W:0.023 / U:31.408 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site