All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Brauner <brauner@kernel.org>
To: linux-fsdevel@vger.kernel.org
Cc: Christian Brauner <brauner@kernel.org>,
	Seth Forshee <sforshee@kernel.org>,
	Christoph Hellwig <hch@lst.de>, Al Viro <viro@zeniv.linux.org.uk>,
	Eric Van Hensbergen <ericvh@gmail.com>,
	Latchesar Ionkov <lucho@ionkov.net>,
	Dominique Martinet <asmadeus@codewreck.org>,
	Christian Schoenebeck <linux_oss@crudebyte.com>,
	v9fs-developer@lists.sourceforge.net
Subject: [PATCH 28/29] 9p: use stub posix acl handlers
Date: Thu, 22 Sep 2022 17:17:26 +0200	[thread overview]
Message-ID: <20220922151728.1557914-29-brauner@kernel.org> (raw)
In-Reply-To: <20220922151728.1557914-1-brauner@kernel.org>

Now that 9p supports the get and set acl inode operations and the vfs
has been switched to the new posi api, 9p can simply rely on the stub
posix acl handlers. The custom xattr handlers and associated unused
helpers can be removed.

Signed-off-by: Christian Brauner (Microsoft) <brauner@kernel.org>
---
 fs/9p/acl.c   | 121 --------------------------------------------------
 fs/9p/xattr.c |   7 +--
 fs/9p/xattr.h |   2 -
 3 files changed, 4 insertions(+), 126 deletions(-)

diff --git a/fs/9p/acl.c b/fs/9p/acl.c
index ad54f8ce0804..8fb88e440602 100644
--- a/fs/9p/acl.c
+++ b/fs/9p/acl.c
@@ -357,124 +357,3 @@ int v9fs_acl_mode(struct inode *dir, umode_t *modep,
 	*modep  = mode;
 	return 0;
 }
-
-static int v9fs_xattr_get_acl(const struct xattr_handler *handler,
-			      struct dentry *dentry, struct inode *inode,
-			      const char *name, void *buffer, size_t size)
-{
-	struct v9fs_session_info *v9ses;
-	struct posix_acl *acl;
-	int error;
-
-	v9ses = v9fs_dentry2v9ses(dentry);
-	/*
-	 * We allow set/get/list of acl when access=client is not specified
-	 */
-	if ((v9ses->flags & V9FS_ACCESS_MASK) != V9FS_ACCESS_CLIENT)
-		return v9fs_xattr_get(dentry, handler->name, buffer, size);
-
-	acl = v9fs_get_cached_acl(inode, handler->flags);
-	if (IS_ERR(acl))
-		return PTR_ERR(acl);
-	if (acl == NULL)
-		return -ENODATA;
-	error = posix_acl_to_xattr(&init_user_ns, acl, buffer, size);
-	posix_acl_release(acl);
-
-	return error;
-}
-
-static int v9fs_xattr_set_acl(const struct xattr_handler *handler,
-			      struct user_namespace *mnt_userns,
-			      struct dentry *dentry, struct inode *inode,
-			      const char *name, const void *value,
-			      size_t size, int flags)
-{
-	int retval;
-	struct posix_acl *acl;
-	struct v9fs_session_info *v9ses;
-
-	v9ses = v9fs_dentry2v9ses(dentry);
-	/*
-	 * set the attribute on the remote. Without even looking at the
-	 * xattr value. We leave it to the server to validate
-	 */
-	if ((v9ses->flags & V9FS_ACCESS_MASK) != V9FS_ACCESS_CLIENT)
-		return v9fs_xattr_set(dentry, handler->name, value, size,
-				      flags);
-
-	if (S_ISLNK(inode->i_mode))
-		return -EOPNOTSUPP;
-	if (!inode_owner_or_capable(&init_user_ns, inode))
-		return -EPERM;
-	if (value) {
-		/* update the cached acl value */
-		acl = posix_acl_from_xattr(&init_user_ns, value, size);
-		if (IS_ERR(acl))
-			return PTR_ERR(acl);
-		else if (acl) {
-			retval = posix_acl_valid(inode->i_sb->s_user_ns, acl);
-			if (retval)
-				goto err_out;
-		}
-	} else
-		acl = NULL;
-
-	switch (handler->flags) {
-	case ACL_TYPE_ACCESS:
-		if (acl) {
-			struct iattr iattr = { 0 };
-			struct posix_acl *old_acl = acl;
-
-			retval = posix_acl_update_mode(&init_user_ns, inode,
-						       &iattr.ia_mode, &acl);
-			if (retval)
-				goto err_out;
-			if (!acl) {
-				/*
-				 * ACL can be represented
-				 * by the mode bits. So don't
-				 * update ACL.
-				 */
-				posix_acl_release(old_acl);
-				value = NULL;
-				size = 0;
-			}
-			iattr.ia_valid = ATTR_MODE;
-			/* FIXME should we update ctime ?
-			 * What is the following setxattr update the
-			 * mode ?
-			 */
-			v9fs_vfs_setattr_dotl(&init_user_ns, dentry, &iattr);
-		}
-		break;
-	case ACL_TYPE_DEFAULT:
-		if (!S_ISDIR(inode->i_mode)) {
-			retval = acl ? -EINVAL : 0;
-			goto err_out;
-		}
-		break;
-	default:
-		BUG();
-	}
-	retval = v9fs_xattr_set(dentry, handler->name, value, size, flags);
-	if (!retval)
-		set_cached_acl(inode, handler->flags, acl);
-err_out:
-	posix_acl_release(acl);
-	return retval;
-}
-
-const struct xattr_handler v9fs_xattr_acl_access_handler = {
-	.name	= XATTR_NAME_POSIX_ACL_ACCESS,
-	.flags	= ACL_TYPE_ACCESS,
-	.get	= v9fs_xattr_get_acl,
-	.set	= v9fs_xattr_set_acl,
-};
-
-const struct xattr_handler v9fs_xattr_acl_default_handler = {
-	.name	= XATTR_NAME_POSIX_ACL_DEFAULT,
-	.flags	= ACL_TYPE_DEFAULT,
-	.get	= v9fs_xattr_get_acl,
-	.set	= v9fs_xattr_set_acl,
-};
diff --git a/fs/9p/xattr.c b/fs/9p/xattr.c
index 1f9298a4bd42..ae6a93871338 100644
--- a/fs/9p/xattr.c
+++ b/fs/9p/xattr.c
@@ -8,6 +8,7 @@
 #include <linux/fs.h>
 #include <linux/sched.h>
 #include <linux/uio.h>
+#include <linux/posix_acl_xattr.h>
 #include <net/9p/9p.h>
 #include <net/9p/client.h>
 
@@ -182,9 +183,9 @@ static struct xattr_handler v9fs_xattr_security_handler = {
 const struct xattr_handler *v9fs_xattr_handlers[] = {
 	&v9fs_xattr_user_handler,
 	&v9fs_xattr_trusted_handler,
-#ifdef CONFIG_9P_FS_POSIX_ACL
-	&v9fs_xattr_acl_access_handler,
-	&v9fs_xattr_acl_default_handler,
+#ifdef CONFIG_FS_POSIX_ACL
+	&posix_acl_access_xattr_handler,
+	&posix_acl_default_xattr_handler,
 #endif
 #ifdef CONFIG_9P_FS_SECURITY
 	&v9fs_xattr_security_handler,
diff --git a/fs/9p/xattr.h b/fs/9p/xattr.h
index 3e11fc3331eb..b5636e544c8a 100644
--- a/fs/9p/xattr.h
+++ b/fs/9p/xattr.h
@@ -11,8 +11,6 @@
 #include <net/9p/client.h>
 
 extern const struct xattr_handler *v9fs_xattr_handlers[];
-extern const struct xattr_handler v9fs_xattr_acl_access_handler;
-extern const struct xattr_handler v9fs_xattr_acl_default_handler;
 
 ssize_t v9fs_fid_xattr_get(struct p9_fid *fid, const char *name,
 			   void *buffer, size_t buffer_size);
-- 
2.34.1


  parent reply	other threads:[~2022-09-22 15:19 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-22 15:16 [RFC PATCH 00/29] acl: add vfs posix acl api Christian Brauner
2022-09-22 15:16 ` [PATCH 01/29] fs: pass dentry to set acl method Christian Brauner
2022-09-23  6:43   ` Christoph Hellwig
2022-09-23  8:09     ` Christian Brauner
2022-09-22 15:17 ` [PATCH 02/29] fs: rename current get " Christian Brauner
2022-09-23  6:44   ` Christoph Hellwig
2022-09-23  8:07     ` Christian Brauner
2022-09-22 15:17 ` [PATCH 03/29] fs: add new " Christian Brauner
2022-09-23  6:46   ` Christoph Hellwig
2022-09-23  8:07     ` Christian Brauner
2022-09-22 15:17 ` [PATCH 04/29] cifs: implement " Christian Brauner
2022-09-23  3:52   ` Steve French
2022-09-23  8:38     ` Christian Brauner
2022-09-25 22:53       ` Steve French
2022-09-26  8:35         ` Christian Brauner
2022-09-22 15:17 ` [PATCH 05/29] cifs: implement set " Christian Brauner
2022-09-22 15:17 ` [PATCH 06/29] 9p: implement get " Christian Brauner
2022-09-24 17:56   ` Al Viro
2022-09-26  8:32     ` Christian Brauner
2022-09-24 18:13   ` Al Viro
2022-09-26  8:16     ` Christian Brauner
2022-09-22 15:17 ` [PATCH 07/29] 9p: implement set " Christian Brauner
2022-09-24 18:22   ` Al Viro
2022-09-26  7:51     ` Christian Brauner
2022-09-22 15:17 ` [PATCH 08/29] acl: add vfs_set_acl() Christian Brauner
2022-09-22 15:17 ` [PATCH 09/29] security: add set acl hook Christian Brauner
2022-09-22 15:17 ` [PATCH 10/29] selinux: implement " Christian Brauner
2022-09-22 17:16   ` Paul Moore
2022-09-23  6:47     ` Christoph Hellwig
2022-09-23  7:57       ` Christian Brauner
2022-09-23 14:26         ` Paul Moore
2022-09-23 14:35           ` Christian Brauner
2022-09-23 17:35             ` Paul Moore
2022-09-26  9:05               ` Christian Brauner
2022-09-26 18:48                 ` Paul Moore
2022-09-27  7:34               ` Christoph Hellwig
2022-09-22 15:17 ` [PATCH 11/29] smack: " Christian Brauner
2022-09-22 15:17 ` [PATCH 12/29] evm: " Christian Brauner
2022-09-22 15:17 ` [PATCH 13/29] acl: use " Christian Brauner
2022-09-22 15:17 ` [PATCH 14/29] evm: add post " Christian Brauner
2022-09-22 15:17 ` [PATCH 15/29] acl: add vfs_get_acl() Christian Brauner
2022-09-22 15:17 ` [PATCH 16/29] acl: add vfs_remove_acl() Christian Brauner
2022-09-22 15:17 ` [PATCH 17/29] evm: simplify evm_xattr_acl_change() Christian Brauner
2022-09-22 15:17 ` [PATCH 18/29] ksmbd: use vfs_remove_acl() Christian Brauner
2022-09-22 15:17 ` [PATCH 19/29] ecryptfs: implement get acl method Christian Brauner
2022-09-22 15:17 ` [PATCH 20/29] ecryptfs: implement set " Christian Brauner
2022-09-22 15:17 ` [PATCH 21/29] ovl: implement get " Christian Brauner
2022-09-23 14:59   ` Miklos Szeredi
2022-09-23 15:07     ` Christian Brauner
2022-09-22 15:17 ` [PATCH 22/29] ovl: implement set " Christian Brauner
2022-09-23 15:18   ` Miklos Szeredi
2022-09-23 15:35     ` Christian Brauner
2022-09-22 15:17 ` [PATCH 23/29] ovl: use posix acl api Christian Brauner
2022-09-23 15:38   ` Miklos Szeredi
2022-09-23 15:47     ` Christian Brauner
2022-09-23 15:57       ` Miklos Szeredi
2022-09-23 16:23         ` Christian Brauner
2022-09-22 15:17 ` [PATCH 24/29] xattr: " Christian Brauner
2022-09-22 15:17 ` [PATCH 25/29] ecryptfs: use stub posix acl handlers Christian Brauner
2022-09-22 15:17 ` [PATCH 26/29] ovl: " Christian Brauner
2022-09-22 15:17 ` [PATCH 27/29] cifs: " Christian Brauner
2022-09-22 15:17 ` Christian Brauner [this message]
2022-09-22 15:17 ` [PATCH 29/29] acl: remove a slew of now unused helpers Christian Brauner
2022-09-22 16:27 ` [RFC PATCH 00/29] acl: add vfs posix acl api Casey Schaufler
2022-09-22 17:12   ` Paul Moore
2022-09-22 17:57   ` Linus Torvalds
2022-09-22 18:53     ` Casey Schaufler
2022-09-22 19:07       ` Paul Moore
2022-09-22 21:57         ` Serge E. Hallyn
2022-09-22 22:13           ` Paul Moore
2022-09-23  5:58             ` Christoph Hellwig
2022-09-23  8:52             ` Christian Brauner
2022-09-23 15:22               ` Casey Schaufler
2022-09-23  8:45     ` Christian Brauner
2022-09-23 14:42       ` Paul Moore

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=20220922151728.1557914-29-brauner@kernel.org \
    --to=brauner@kernel.org \
    --cc=asmadeus@codewreck.org \
    --cc=ericvh@gmail.com \
    --cc=hch@lst.de \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux_oss@crudebyte.com \
    --cc=lucho@ionkov.net \
    --cc=sforshee@kernel.org \
    --cc=v9fs-developer@lists.sourceforge.net \
    --cc=viro@zeniv.linux.org.uk \
    /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.