xfs: ioctl check for capabilities in the current user namespace
Subsystems (2)
PATCH v5 3/7 xfs: ioctl check for capabilities in the current user namespace
Use inode_capable() to check if SUID|SGID bits should be cleared to match similar check in inode_change_ok().
The check for CAP_LINUX_IMMUTABLE was not modified since all other file systems also check against init_user_ns rather than current_user_ns.
Signed-off-by Dwight Engen <[email protected]>
--- fs/xfs/xfs_ioctl.c | 4 ++-- kernel/capability.c | 1 + 2 files changed, 3 insertions(+), 2 deletions(-)
fs/xfs/xfs_ioctl.c +2 -2
@@ -981,7 +981,7 @@ xfs_ioctl_setattr(* to the file owner ID, except in cases where the * CAP_FSETID capability is applicable. */ -if (current_fsuid () != ip->i_d.di_uid && !capable (CAP_FOWNER )) { +if (!inode_owner_or_capable (VFS_I (ip))) { code =XFS_ERROR (EPERM ); goto error_return; }
@@ -1103,7 +1103,7 @@ xfs_ioctl_setattr(* cleared upon successful return from chown() */ if ((ip->i_d.di_mode & (S_ISUID |S_ISGID )) && - !capable (CAP_FSETID )) + !inode_capable (VFS_I (ip),CAP_FSETID )) ip->i_d.di_mode &= ~(S_ISUID |S_ISGID );/*
kernel/capability.c +1 -0
@@ -464,3 +464,4 @@ bool inode_capable(const struct inode *inode, int cap)return ns_capable (ns, cap) &&kuid_has_mapping (ns, inode->i_uid); } +EXPORT_SYMBOL (inode_capable);
Signature · 6 lines
1.8.1.4 _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs