vfs: Fix the posix_acl_xattr_list return value
[linux-block.git] / fs / posix_acl.c
index 4fb17ded7d4780d8d19e7c68cb1c7cedfeb79cf7..2fdca614ded360fd4fccb3012133be7729940a70 100644 (file)
@@ -768,6 +768,8 @@ posix_acl_xattr_get(struct dentry *dentry, const char *name,
        struct posix_acl *acl;
        int error;
 
+       if (strcmp(name, "") != 0)
+               return -EINVAL;
        if (!IS_POSIXACL(d_backing_inode(dentry)))
                return -EOPNOTSUPP;
        if (d_is_symlink(dentry))
@@ -793,6 +795,8 @@ posix_acl_xattr_set(struct dentry *dentry, const char *name,
        struct posix_acl *acl = NULL;
        int ret;
 
+       if (strcmp(name, "") != 0)
+               return -EINVAL;
        if (!IS_POSIXACL(inode))
                return -EOPNOTSUPP;
        if (!inode->i_op->set_acl)
@@ -829,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;