GFS2: Move gfs2_unlink_ok into ops_inode.c
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>
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user