remove jfs xattr permission checks
Subsystems (2)
PATCH 3/8 remove jfs xattr permission checks
remove checks now in the VFS
Signed-off-by Christoph Hellwig <[email protected]>
fs/jfs/xattr.c +9 -42
@@ -758,36 +758,23 @@static int can_set_xattr (struct inode *inode,const char *name,const void *value,size_t value_len) { -if (IS_RDONLY (inode)) -return -EROFS ; - -if (IS_IMMUTABLE (inode) ||IS_APPEND (inode)) -return -EPERM ; - -if (strncmp (name,XATTR_SYSTEM_PREFIX ,XATTR_SYSTEM_PREFIX_LEN ) ==0 ) -/* -* "system.*" -*/ +if (!strncmp (name,XATTR_SYSTEM_PREFIX ,XATTR_SYSTEM_PREFIX_LEN ))return can_set_system_xattr (inode, name, value, value_len); -if (strncmp (name,XATTR_TRUSTED_PREFIX ,XATTR_TRUSTED_PREFIX_LEN ) ==0 ) -return (capable (CAP_SYS_ADMIN ) ?0 : -EPERM ); - -#ifdef CONFIG_JFS_SECURITY -if (strncmp (name,XATTR_SECURITY_PREFIX ,XATTR_SECURITY_PREFIX_LEN ) - ==0 ) -return 0 ;/* Leave it to the security module */ -#endif - -if ((strncmp (name,XATTR_USER_PREFIX ,XATTR_USER_PREFIX_LEN ) !=0 ) && - (strncmp (name,XATTR_OS2_PREFIX ,XATTR_OS2_PREFIX_LEN ) !=0 )) +/* +* Don't allow setting an attribute in an unknown namespace. +*/ +if (strncmp (name,XATTR_TRUSTED_PREFIX ,XATTR_TRUSTED_PREFIX_LEN ) && +strncmp (name,XATTR_SECURITY_PREFIX ,XATTR_SECURITY_PREFIX_LEN ) && +strncmp (name,XATTR_USER_PREFIX ,XATTR_USER_PREFIX_LEN ) && +strncmp (name,XATTR_OS2_PREFIX ,XATTR_OS2_PREFIX_LEN ))return -EOPNOTSUPP ;if (!S_ISREG (inode->i_mode) && (!S_ISDIR (inode->i_mode) || inode->i_mode &S_ISVTX ))return -EPERM ; -return permission (inode,MAY_WRITE ,NULL ); +return 0 ; } int __jfs_setxattr(tid_t tid, struct inode *inode, const char *name,
@@ -957,22 +944,6 @@return rc; } -static int can_get_xattr (struct inode *inode,const char *name) -{ -#ifdef CONFIG_JFS_SECURITY -if (strncmp (name,XATTR_SECURITY_PREFIX ,XATTR_SECURITY_PREFIX_LEN ) ==0 ) -return 0 ; -#endif - -if (strncmp (name,XATTR_TRUSTED_PREFIX ,XATTR_TRUSTED_PREFIX_LEN ) ==0 ) -return (capable (CAP_SYS_ADMIN ) ?0 : -EPERM ); - -if (strncmp (name,XATTR_SYSTEM_PREFIX ,XATTR_SYSTEM_PREFIX_LEN ) ==0 ) -return 0 ; - -return permission (inode,MAY_READ ,NULL ); -} -ssize_t __jfs_getxattr (struct inode *inode,const char *name,void *data,size_t buf_size) {
@@ -983,12 +954,8 @@ssize_t size;int namelen =strlen (name);char *os2name =NULL ; -int rc;char *value; -if ((rc =can_get_xattr (inode, name))) -return rc; -if (strncmp (name,XATTR_OS2_PREFIX ,XATTR_OS2_PREFIX_LEN ) ==0 ) { os2name =kmalloc (namelen -XATTR_OS2_PREFIX_LEN +1 ,GFP_KERNEL );