fs: fold __inode_permission() into inode_permission()
PATCH 1/1 fs: fold __inode_permission() into inode_permission()
From: Eric Biggers <[email protected]>
Since commit 9c630ebefeee ("ovl: simplify permission checking"), overlayfs doesn't call __inode_permission() anymore, which leaves no users other than inode_permission(). So just fold it back into inode_permission().
Signed-off-by Eric Biggers <[email protected]>
--- fs/namei.c | 71 ++++++++++++++++++++---------------------------------- include/linux/fs.h | 1 - 2 files changed, 26 insertions(+), 46 deletions(-)
fs/namei.c +26 -45
@@ -390,50 +390,6 @@ static inline int do_inode_permission(struct inode *inode, int mask)return generic_permission (inode, mask); } -/** -* __inode_permission - Check for access rights to a given inode -* @inode: Inode to check permission on -* @mask: Right to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC) -* -* Check for read/write/execute permissions on an inode. -* -* When checking for MAY_APPEND, MAY_WRITE must also be set in @mask. -* -* This does not check for a read-only file system. You probably want -* inode_permission(). -*/ -int __inode_permission (struct inode *inode,int mask) -{ -int retval; - -if (unlikely (mask &MAY_WRITE )) { -/* -* Nobody gets write access to an immutable file. -*/ -if (IS_IMMUTABLE (inode)) -return -EPERM ; - -/* -* Updating mtime will likely cause i_uid and i_gid to be -* written back improperly if their true value is unknown -* to the vfs. -*/ -if (HAS_UNMAPPED_ID (inode)) -return -EACCES ; - } - - retval =do_inode_permission (inode, mask); -if (retval) -return retval; - - retval =devcgroup_inode_permission (inode, mask); -if (retval) -return retval; - -return security_inode_permission (inode, mask); -} -EXPORT_SYMBOL (__inode_permission); -/** * sb_permission - Check superblock-level permissions * @sb: Superblock of inode to check permission on
@@ -472,7 +428,32 @@ int inode_permission(struct inode *inode, int mask) retval =sb_permission (inode->i_sb, inode, mask);if (retval)return retval; -return __inode_permission (inode, mask); + +if (unlikely (mask &MAY_WRITE )) { +/* +* Nobody gets write access to an immutable file. +*/ +if (IS_IMMUTABLE (inode)) +return -EPERM ; + +/* +* Updating mtime will likely cause i_uid and i_gid to be +* written back improperly if their true value is unknown +* to the vfs. +*/ +if (HAS_UNMAPPED_ID (inode)) +return -EACCES ; + } + + retval =do_inode_permission (inode, mask); +if (retval) +return retval; + + retval =devcgroup_inode_permission (inode, mask); +if (retval) +return retval; + +return security_inode_permission (inode, mask); }EXPORT_SYMBOL (inode_permission);
include/linux/fs.h +0 -1
@@ -2691,7 +2691,6 @@ extern sector_t bmap(struct inode *, sector_t);#endif extern int notify_change (struct dentry *,struct iattr *,struct inode **);extern int inode_permission (struct inode *,int ); -extern int __inode_permission (struct inode *,int );extern int generic_permission (struct inode *,int );extern int __check_sticky (struct inode *dir,struct inode *inode);
Signature · 1 line
2.15.1