vfs: Fix the posix_acl_xattr_list return value
authorAndreas Gruenbacher <agruenba@redhat.com>
Tue, 3 Nov 2015 14:25:08 +0000 (15:25 +0100)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 14 Nov 2015 01:34:28 +0000 (20:34 -0500)
When a filesystem that contains POSIX ACLs is mounted without ACL support
(-o noacl), the appropriate behavior is not to list any existing POSIX ACL
xattrs.  The return value for list xattr handlers in this case is 0, not an
error code: several filesystems that use the POSIX ACL xattr handlers do
not expect the list operation to fail.

Symlinks cannot have ACLs, so posix_acl_xattr_list will never be called for
symlinks in the first place.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/posix_acl.c

index b1a66e844d355a6f7615b3e2e8b97765b072e2a5..2fdca614ded360fd4fccb3012133be7729940a70 100644 (file)
@@ -833,9 +833,7 @@ posix_acl_xattr_list(struct dentry *dentry, char *list, size_t list_size,
        size_t size;
 
        if (!IS_POSIXACL(d_backing_inode(dentry)))
-               return -EOPNOTSUPP;
-       if (d_is_symlink(dentry))
-               return -EOPNOTSUPP;
+               return 0;
 
        if (type == ACL_TYPE_ACCESS)
                xname = POSIX_ACL_XATTR_ACCESS;