xfs: also remove cached ACLs when removing the underlying attr

We should not just invalidate the ACL when setting the underlying
attribute, but also when removing it.  The ioctl interface gets that
right, but the normal xattr inteface skipped the xfs_forget_acl due
to an early return.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
Christoph Hellwig 2020-01-07 15:25:38 -08:00 committed by Darrick J. Wong
parent 84fd081f8a
commit 8cde9f259c

View File

@ -74,10 +74,11 @@ xfs_xattr_set(const struct xattr_handler *handler, struct dentry *unused,
if (flags & XATTR_REPLACE)
xflags |= ATTR_REPLACE;
if (!value)
return xfs_attr_remove(ip, (unsigned char *)name, xflags);
error = xfs_attr_set(ip, (unsigned char *)name,
if (value)
error = xfs_attr_set(ip, (unsigned char *)name,
(void *)value, size, xflags);
else
error = xfs_attr_remove(ip, (unsigned char *)name, xflags);
if (!error)
xfs_forget_acl(inode, name, xflags);