ANDROID: xattr: Pass EOPNOTSUPP to permission2
authorDaniel Rosenberg <drosen@google.com>
Tue, 23 Jan 2018 22:34:38 +0000 (14:34 -0800)
committerStricted <info@stricted.net>
Thu, 11 Oct 2018 16:03:46 +0000 (18:03 +0200)
The permission call for xattr operations happens regardless of
whether or not the xattr functions are implemented.

The xattr functions currently don't have support for permission2.
Passing EOPNOTSUPP as the mount point in xattr_permission allows
us to return EOPNOTSUPP early in permission2, if the filesystem
supports it.

Change-Id: I9d07e4cd633cf40af60450ffbff7ac5c1b4e8c2c
Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 35848445

fs/sdcardfs/inode.c
fs/xattr.c

index e799bb0825f4eb233bb8e04698f826bc1bcd1dbf..36ae048edd77a9244ac8a37318e2487b1164a929 100644 (file)
@@ -637,6 +637,8 @@ static int sdcardfs_permission(struct vfsmount *mnt, struct inode *inode, int ma
        struct inode tmp;
        struct sdcardfs_inode_data *top = top_data_get(SDCARDFS_I(inode));
 
+       if (IS_ERR(mnt))
+               return PTR_ERR(mnt);
        if (!top)
                return -EINVAL;
 
index 3377dff184042044547d42e9b123944a0ad7e96a..65b8b652db1da288eb7a67e55b7f695979bf3057 100644 (file)
@@ -70,7 +70,7 @@ xattr_permission(struct inode *inode, const char *name, int mask)
                        return -EPERM;
        }
 
-       return inode_permission(inode, mask);
+       return inode_permission2(ERR_PTR(-EOPNOTSUPP), inode, mask);
 }
 
 /**