Re: [PATCH 03/33] xfs: also remove cached ACLs when removing the underlying attr

Darrick J. Wong
2019-12-18T21:31:16Z

On Thu, Dec 12, 2019 at 11:54:03AM +0100, Christoph Hellwig wrote:
> 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>

Shouldn't someone have a testcase for this?

--D

> ---
> fs/xfs/xfs_xattr.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/fs/xfs/xfs_xattr.c b/fs/xfs/xfs_xattr.c
> index 383f0203d103..2288f20ae282 100644
> --- a/fs/xfs/xfs_xattr.c
> +++ b/fs/xfs/xfs_xattr.c
> @@ -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);
>
> --
> 2.20.1
>