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 коммит произвёл Darrick J. Wong
Родитель 84fd081f8a
Коммит 8cde9f259c
1 изменённых файлов: 4 добавлений и 3 удалений

Просмотреть файл

@ -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);