lkml.org 
[lkml]   [2009]   [Jun]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 18/24] GFS2: Move gfs2_unlink_ok into ops_inode.c
    Date
    Another function which is only called from one ops_inode.c so
    we move it and make it static.

    Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>

    diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
    index 676e750..2f94bd7 100644
    --- a/fs/gfs2/inode.c
    +++ b/fs/gfs2/inode.c
    @@ -1046,45 +1046,6 @@ fail:
    return ERR_PTR(error);
    }

    -
    -/*
    - * gfs2_unlink_ok - check to see that a inode is still in a directory
    - * @dip: the directory
    - * @name: the name of the file
    - * @ip: the inode
    - *
    - * Assumes that the lock on (at least) @dip is held.
    - *
    - * Returns: 0 if the parent/child relationship is correct, errno if it isn't
    - */
    -
    -int gfs2_unlink_ok(struct gfs2_inode *dip, const struct qstr *name,
    - const struct gfs2_inode *ip)
    -{
    - int error;
    -
    - if (IS_IMMUTABLE(&ip->i_inode) || IS_APPEND(&ip->i_inode))
    - return -EPERM;
    -
    - if ((dip->i_inode.i_mode & S_ISVTX) &&
    - dip->i_inode.i_uid != current_fsuid() &&
    - ip->i_inode.i_uid != current_fsuid() && !capable(CAP_FOWNER))
    - return -EPERM;
    -
    - if (IS_APPEND(&dip->i_inode))
    - return -EPERM;
    -
    - error = gfs2_permission(&dip->i_inode, MAY_WRITE | MAY_EXEC);
    - if (error)
    - return error;
    -
    - error = gfs2_dir_check(&dip->i_inode, name, ip);
    - if (error)
    - return error;
    -
    - return 0;
    -}
    -
    static int __gfs2_setattr_simple(struct gfs2_inode *ip, struct iattr *attr)
    {
    struct buffer_head *dibh;
    diff --git a/fs/gfs2/inode.h b/fs/gfs2/inode.h
    index fc9a08f..c341aaf 100644
    --- a/fs/gfs2/inode.h
    +++ b/fs/gfs2/inode.h
    @@ -96,8 +96,6 @@ extern struct inode *gfs2_lookupi(struct inode *dir, const struct qstr *name,
    extern struct inode *gfs2_createi(struct gfs2_holder *ghs,
    const struct qstr *name,
    unsigned int mode, dev_t dev);
    -extern int gfs2_unlink_ok(struct gfs2_inode *dip, const struct qstr *name,
    - const struct gfs2_inode *ip);
    extern int gfs2_permission(struct inode *inode, int mask);
    extern int gfs2_setattr_simple(struct gfs2_inode *ip, struct iattr *attr);
    extern struct inode *gfs2_lookup_simple(struct inode *dip, const char *name);
    diff --git a/fs/gfs2/ops_inode.c b/fs/gfs2/ops_inode.c
    index f607f09..f8bd20b 100644
    --- a/fs/gfs2/ops_inode.c
    +++ b/fs/gfs2/ops_inode.c
    @@ -262,6 +262,44 @@ out_parent:
    return error;
    }

    +/*
    + * gfs2_unlink_ok - check to see that a inode is still in a directory
    + * @dip: the directory
    + * @name: the name of the file
    + * @ip: the inode
    + *
    + * Assumes that the lock on (at least) @dip is held.
    + *
    + * Returns: 0 if the parent/child relationship is correct, errno if it isn't
    + */
    +
    +static int gfs2_unlink_ok(struct gfs2_inode *dip, const struct qstr *name,
    + const struct gfs2_inode *ip)
    +{
    + int error;
    +
    + if (IS_IMMUTABLE(&ip->i_inode) || IS_APPEND(&ip->i_inode))
    + return -EPERM;
    +
    + if ((dip->i_inode.i_mode & S_ISVTX) &&
    + dip->i_inode.i_uid != current_fsuid() &&
    + ip->i_inode.i_uid != current_fsuid() && !capable(CAP_FOWNER))
    + return -EPERM;
    +
    + if (IS_APPEND(&dip->i_inode))
    + return -EPERM;
    +
    + error = gfs2_permission(&dip->i_inode, MAY_WRITE | MAY_EXEC);
    + if (error)
    + return error;
    +
    + error = gfs2_dir_check(&dip->i_inode, name, ip);
    + if (error)
    + return error;
    +
    + return 0;
    +}
    +
    /**
    * gfs2_unlink - Unlink a file
    * @dir: The inode of the directory containing the file to unlink
    --
    1.6.0.6


    \
     
     \ /
      Last update: 2009-06-10 11:51    [W:0.029 / U:0.080 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site