[PATCH 4/4] xfs: SGI ACLs: Prepare for richacls
Andreas Gruenbacher
agruenba at redhat.com
Mon Oct 26 15:15:51 CDT 2015
On Sat, Oct 24, 2015 at 11:16 PM, Andreas Gruenbacher
<agruenba at redhat.com> wrote:
> In case an inode has trusted.SGI_ACL_* attributes but POSIX ACLs are not
> enabled, treat those attributes as normal trusted attributes and bypass the
> get_acl and set_acl inode operations to prevent corrupting inode->i_mode,
> inode->i_acl, or inode->i_default_acl.
>
> Signed-off-by: Andreas Gruenbacher <agruenba at redhat.com>
> ---
> fs/xfs/xfs_acl.c | 5 +++++
> fs/xfs/xfs_xattr.c | 5 +++--
> fs/xfs/xfs_xattr.h | 28 ++++++++++++++++++++++++++++
> 3 files changed, 36 insertions(+), 2 deletions(-)
> create mode 100644 fs/xfs/xfs_xattr.h
>
> diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c
> index 64ffb85..bee1493 100644
> --- a/fs/xfs/xfs_acl.c
> +++ b/fs/xfs/xfs_acl.c
> @@ -21,6 +21,7 @@
> #include "xfs_trans_resv.h"
> #include "xfs_mount.h"
> #include "xfs_inode.h"
> +#include "xfs_xattr.h"
> #include "xfs_acl.h"
> #include "xfs_attr.h"
> #include "xfs_trace.h"
> @@ -319,6 +320,8 @@ xfs_xattr_acl_get(struct dentry *dentry, const char *name,
> struct posix_acl *acl;
> int error;
>
> + if (!IS_POSIXACL(inode))
> + return xfs_xattr_get(dentry, name, value, size, type);
This doesn't give us UID/GID mapping. In-place rewriting as the VFS
does would help, but the value is a const * here so we cannot really
modify it.
> if (S_ISLNK(inode->i_mode))
> return -EOPNOTSUPP;
>
Andreas
More information about the xfs
mailing list