All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: linux-xfs@vger.kernel.org
Cc: Dave Chinner <dchinner@redhat.com>,
	Chandan Rajendra <chandanrlinux@gmail.com>,
	"Darrick J . Wong" <darrick.wong@oracle.com>
Subject: [PATCH 25/30] xfs: improve xfs_forget_acl
Date: Tue, 25 Feb 2020 15:10:07 -0800	[thread overview]
Message-ID: <20200225231012.735245-26-hch@lst.de> (raw)
In-Reply-To: <20200225231012.735245-1-hch@lst.de>

Move the function to xfs_acl.c and provide a proper stub for the
!CONFIG_XFS_POSIX_ACL case.  Lift the flags check to the caller as it
nicely fits in there.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Chandan Rajendra <chandanrlinux@gmail.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 fs/xfs/xfs_acl.c   | 16 ++++++++++++++++
 fs/xfs/xfs_acl.h   |  6 ++++--
 fs/xfs/xfs_ioctl.c |  4 ++--
 fs/xfs/xfs_xattr.c | 26 ++------------------------
 4 files changed, 24 insertions(+), 28 deletions(-)

diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c
index 079656da3c18..c62265cb9062 100644
--- a/fs/xfs/xfs_acl.c
+++ b/fs/xfs/xfs_acl.c
@@ -266,3 +266,19 @@ xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 
 	return error;
 }
+
+/*
+ * Invalidate any cached ACLs if the user has bypassed the ACL interface.
+ * We don't validate the content whatsoever so it is caller responsibility to
+ * provide data in valid format and ensure i_mode is consistent.
+ */
+void
+xfs_forget_acl(
+	struct inode		*inode,
+	const char		*name)
+{
+	if (!strcmp(name, SGI_ACL_FILE))
+		forget_cached_acl(inode, ACL_TYPE_ACCESS);
+	else if (!strcmp(name, SGI_ACL_DEFAULT))
+		forget_cached_acl(inode, ACL_TYPE_DEFAULT);
+}
diff --git a/fs/xfs/xfs_acl.h b/fs/xfs/xfs_acl.h
index 94615e34bc86..c042c0868016 100644
--- a/fs/xfs/xfs_acl.h
+++ b/fs/xfs/xfs_acl.h
@@ -13,14 +13,16 @@ struct posix_acl;
 extern struct posix_acl *xfs_get_acl(struct inode *inode, int type);
 extern int xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type);
 extern int __xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type);
+void xfs_forget_acl(struct inode *inode, const char *name);
 #else
 static inline struct posix_acl *xfs_get_acl(struct inode *inode, int type)
 {
 	return NULL;
 }
 # define xfs_set_acl					NULL
+static inline void xfs_forget_acl(struct inode *inode, const char *name)
+{
+}
 #endif /* CONFIG_XFS_POSIX_ACL */
 
-extern void xfs_forget_acl(struct inode *inode, const char *name, int xflags);
-
 #endif	/* __XFS_ACL_H__ */
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
index c67d2277490d..d3b5d8336583 100644
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -510,8 +510,8 @@ xfs_attrmulti_attr_set(
 	}
 
 	error = xfs_attr_set(&args);
-	if (!error)
-		xfs_forget_acl(inode, name, flags);
+	if (!error && (flags & ATTR_ROOT))
+		xfs_forget_acl(inode, name);
 	kfree(args.value);
 	return error;
 }
diff --git a/fs/xfs/xfs_xattr.c b/fs/xfs/xfs_xattr.c
index 260287552ad4..6e149fedd75a 100644
--- a/fs/xfs/xfs_xattr.c
+++ b/fs/xfs/xfs_xattr.c
@@ -39,28 +39,6 @@ xfs_xattr_get(const struct xattr_handler *handler, struct dentry *unused,
 	return args.valuelen;
 }
 
-void
-xfs_forget_acl(
-	struct inode		*inode,
-	const char		*name,
-	int			xflags)
-{
-	/*
-	 * Invalidate any cached ACLs if the user has bypassed the ACL
-	 * interface. We don't validate the content whatsoever so it is caller
-	 * responsibility to provide data in valid format and ensure i_mode is
-	 * consistent.
-	 */
-	if (xflags & ATTR_ROOT) {
-#ifdef CONFIG_XFS_POSIX_ACL
-		if (!strcmp(name, SGI_ACL_FILE))
-			forget_cached_acl(inode, ACL_TYPE_ACCESS);
-		else if (!strcmp(name, SGI_ACL_DEFAULT))
-			forget_cached_acl(inode, ACL_TYPE_DEFAULT);
-#endif
-	}
-}
-
 static int
 xfs_xattr_set(const struct xattr_handler *handler, struct dentry *unused,
 		struct inode *inode, const char *name, const void *value,
@@ -83,8 +61,8 @@ xfs_xattr_set(const struct xattr_handler *handler, struct dentry *unused,
 		args.flags |= ATTR_REPLACE;
 
 	error = xfs_attr_set(&args);
-	if (!error)
-		xfs_forget_acl(inode, name, args.flags);
+	if (!error && (handler->flags & ATTR_ROOT))
+		xfs_forget_acl(inode, name);
 	return error;
 }
 
-- 
2.24.1


  parent reply	other threads:[~2020-02-25 23:10 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-25 23:09 clean up the attr interface v6 Christoph Hellwig
2020-02-25 23:09 ` [PATCH 01/30] xfs: reject invalid flags combinations in XFS_IOC_ATTRLIST_BY_HANDLE Christoph Hellwig
2020-02-25 23:09 ` [PATCH 02/30] xfs: remove the ATTR_INCOMPLETE flag Christoph Hellwig
2020-02-25 23:09 ` [PATCH 03/30] xfs: merge xfs_attr_remove into xfs_attr_set Christoph Hellwig
2020-02-26 16:24   ` Darrick J. Wong
2020-02-25 23:09 ` [PATCH 04/30] xfs: merge xfs_attrmulti_attr_remove into xfs_attrmulti_attr_set Christoph Hellwig
2020-02-25 23:09 ` [PATCH 05/30] xfs: use strndup_user in XFS_IOC_ATTRMULTI_BY_HANDLE Christoph Hellwig
2020-02-25 23:51   ` Dave Chinner
2020-02-25 23:09 ` [PATCH 06/30] xfs: factor out a helper for a single XFS_IOC_ATTRMULTI_BY_HANDLE op Christoph Hellwig
2020-02-25 23:55   ` Dave Chinner
2020-02-25 23:09 ` [PATCH 07/30] xfs: remove the name == NULL check from xfs_attr_args_init Christoph Hellwig
2020-02-25 23:09 ` [PATCH 08/30] xfs: remove the MAXNAMELEN " Christoph Hellwig
2020-02-25 23:09 ` [PATCH 09/30] xfs: turn xfs_da_args.value into a void pointer Christoph Hellwig
2020-02-25 23:55   ` Dave Chinner
2020-02-25 23:09 ` [PATCH 10/30] xfs: pass an initialized xfs_da_args structure to xfs_attr_set Christoph Hellwig
2020-02-26  0:21   ` Dave Chinner
2020-02-26 15:07     ` Christoph Hellwig
2020-02-25 23:09 ` [PATCH 11/30] xfs: pass an initialized xfs_da_args to xfs_attr_get Christoph Hellwig
2020-02-26  0:33   ` Dave Chinner
2020-02-26 15:10     ` Christoph Hellwig
2020-02-25 23:09 ` [PATCH 12/30] xfs: remove the xfs_inode argument to xfs_attr_get_ilocked Christoph Hellwig
2020-02-25 23:09 ` [PATCH 13/30] xfs: remove ATTR_KERNOVAL Christoph Hellwig
2020-02-25 23:09 ` [PATCH 14/30] xfs: remove ATTR_ALLOC and XFS_DA_OP_ALLOCVAL Christoph Hellwig
2020-02-25 23:09 ` [PATCH 15/30] xfs: replace ATTR_KERNOTIME with XFS_DA_OP_NOTIME Christoph Hellwig
2020-02-25 23:09 ` [PATCH 16/30] xfs: factor out a xfs_attr_match helper Christoph Hellwig
2020-02-25 23:09 ` [PATCH 17/30] xfs: cleanup struct xfs_attr_list_context Christoph Hellwig
2020-02-25 23:10 ` [PATCH 18/30] xfs: remove the unused ATTR_ENTRY macro Christoph Hellwig
2020-02-25 23:10 ` [PATCH 19/30] xfs: open code ATTR_ENTSIZE Christoph Hellwig
2020-02-25 23:10 ` [PATCH 20/30] xfs: move the legacy xfs_attr_list to xfs_ioctl.c Christoph Hellwig
2020-02-25 23:10 ` [PATCH 21/30] xfs: rename xfs_attr_list_int to xfs_attr_list Christoph Hellwig
2020-02-25 23:10 ` [PATCH 22/30] xfs: lift common checks into xfs_ioc_attr_list Christoph Hellwig
2020-02-25 23:10 ` [PATCH 23/30] xfs: lift buffer allocation " Christoph Hellwig
2020-02-25 23:10 ` [PATCH 24/30] xfs: lift cursor copy in/out " Christoph Hellwig
2020-02-25 23:10 ` Christoph Hellwig [this message]
2020-02-25 23:10 ` [PATCH 26/30] xfs: clean up the ATTR_REPLACE checks Christoph Hellwig
2020-02-26  0:36   ` Dave Chinner
2020-02-25 23:10 ` [PATCH 27/30] xfs: clean up the attr flag confusion Christoph Hellwig
2020-02-26  1:03   ` Dave Chinner
2020-02-26 15:14     ` Christoph Hellwig
2020-02-26 15:18       ` Christoph Hellwig
2020-02-25 23:10 ` [PATCH 28/30] xfs: remove XFS_DA_OP_INCOMPLETE Christoph Hellwig
2020-02-26  1:03   ` Dave Chinner
2020-02-25 23:10 ` [PATCH 29/30] xfs: embedded the attrlist cursor into struct xfs_attr_list_context Christoph Hellwig
2020-02-25 23:10 ` [PATCH 30/30] xfs: clean up bufsize alignment in xfs_ioc_attr_list Christoph Hellwig
2020-02-26  1:04   ` Dave Chinner
2020-02-26 16:27 ` clean up the attr interface v6 Darrick J. Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200225231012.735245-26-hch@lst.de \
    --to=hch@lst.de \
    --cc=chandanrlinux@gmail.com \
    --cc=darrick.wong@oracle.com \
    --cc=dchinner@redhat.com \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.