linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
To: Andreas Gruenbacher <agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: Alexander Viro
	<viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org>,
	"Aneesh Kumar K.V"
	<aneesh.kumar-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>,
	"J. Bruce Fields"
	<bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>,
	linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Theodore Ts'o <tytso-3s7WtUTddSA@public.gmane.org>,
	linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Trond Myklebust
	<trond.myklebust-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	xfs-VZNHf3L845pBDgjK7y7TUQ@public.gmane.org,
	Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
	Andreas Dilger
	<adilger.kernel-m1MBpc4rdrD3fQ9qLvQP4Q@public.gmane.org>,
	linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Jeff Layton <jlayton-vpEMnDpepFuMZCB2o+C8xQ@public.gmane.org>,
	linux-ext4-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Anna Schumaker
	<anna.schumaker-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH v18 21/22] ext4: Add richacl support
Date: Fri, 11 Mar 2016 06:27:19 -0800	[thread overview]
Message-ID: <20160311142719.GG14808@infradead.org> (raw)
In-Reply-To: <1456733847-17982-22-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

> +static inline int
> +ext4_acl_chmod(struct inode *inode, umode_t mode)
> +{
> +	if (IS_RICHACL(inode))
> +		return richacl_chmod(inode, inode->i_mode);
> +	return posix_acl_chmod(inode, inode->i_mode);
> +}

Thi isn't ext4-specific and potentially duplicated in every caller.
Please provide this as a common helper.

Also while we're at it, the mode argument is ignore and the function
always uses inode->i_mode instead.

> +ext4_get_richacl(struct inode *inode)
> +{
> +	const int name_index = EXT4_XATTR_INDEX_RICHACL;
> +	void *value = NULL;
> +	struct richacl *acl = NULL;
> +	int retval;
> +
> +	retval = ext4_xattr_get(inode, name_index, "", NULL, 0);
> +	if (retval > 0) {
> +		value = kmalloc(retval, GFP_NOFS);
> +		if (!value)
> +			return ERR_PTR(-ENOMEM);
> +		retval = ext4_xattr_get(inode, name_index, "", value, retval);
> +	}
> +	if (retval > 0) {
> +		acl = richacl_from_xattr(&init_user_ns, value, retval);
> +		if (acl == ERR_PTR(-EINVAL))
> +			acl = ERR_PTR(-EIO);

Shouldn't richacl_from_xattr return the error pointer that ->get_richacl
callers expect?

> +static int
> +__ext4_set_richacl(handle_t *handle, struct inode *inode, struct richacl *acl)
> +{
> +	const int name_index = EXT4_XATTR_INDEX_RICHACL;
> +	umode_t mode = inode->i_mode;
> +	int retval, size;
> +	void *value;
> +
> +	if (richacl_equiv_mode(acl, &mode) == 0) {
> +		inode->i_ctime = ext4_current_time(inode);
> +		inode->i_mode = mode;
> +		ext4_mark_inode_dirty(handle, inode);
> +		return __ext4_remove_richacl(handle, inode);
> +	}

Should this check for a NULL acl instead of special casing that
in ext4_set_richacl?

> +int
> +ext4_init_richacl(handle_t *handle, struct inode *inode, struct inode *dir)
> +{
> +	struct richacl *acl = richacl_create(&inode->i_mode, dir);
> +	int error;
> +
> +	error = PTR_ERR(acl);
> +	if (IS_ERR(acl))
> +		return error;

	if (IS_ERR(acl))
		return PTR_ERR(acl);

> +	if (acl) {
> +		error = __ext4_set_richacl(handle, inode, acl);
> +		richacl_put(acl);
> +	}

Shouldn't richacl_create return NULL if the ACL is equivalent to the
mode bits instead of letting every filesystem figure that out on it's
own?

  parent reply	other threads:[~2016-03-11 14:27 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-29  8:17 [PATCH v18 00/22] Richacls (Core and Ext4) Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 01/22] vfs: Add IS_ACL() and IS_RICHACL() tests Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 02/22] vfs: Add MAY_CREATE_FILE and MAY_CREATE_DIR permission flags Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 04/22] vfs: Make the inode passed to inode_change_ok non-const Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 05/22] vfs: Add permission flags for setting file attributes Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 06/22] richacl: In-memory representation and helper functions Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 07/22] richacl: Permission mapping functions Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 08/22] richacl: Compute maximum file masks from an acl Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 09/22] richacl: Permission check algorithm Andreas Gruenbacher
2016-03-11 14:09   ` Christoph Hellwig
2016-02-29  8:17 ` [PATCH v18 10/22] posix_acl: Unexport acl_by_type and make it static Andreas Gruenbacher
2016-03-11 14:03   ` Christoph Hellwig
2016-02-29  8:17 ` [PATCH v18 12/22] vfs: Add get_richacl and set_richacl inode operations Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 14/22] richacl: Update the file masks in chmod() Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 15/22] richacl: Check if an acl is equivalent to a file mode Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 16/22] richacl: Create-time inheritance Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 17/22] richacl: Automatic Inheritance Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 18/22] richacl: xattr mapping functions Andreas Gruenbacher
     [not found]   ` <1456733847-17982-19-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-03-11 14:17     ` Christoph Hellwig
     [not found]       ` <20160311141701.GE14808-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-03-11 17:03         ` Andreas Gruenbacher
     [not found] ` <1456733847-17982-1-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-02-29  8:17   ` [PATCH v18 03/22] vfs: Add MAY_DELETE_SELF and MAY_DELETE_CHILD permission flags Andreas Gruenbacher
2016-02-29  8:17   ` [PATCH v18 11/22] vfs: Cache base_acl objects in inodes Andreas Gruenbacher
     [not found]     ` <1456733847-17982-12-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-03-11 14:07       ` Christoph Hellwig
2016-03-11 16:24         ` Andreas Gruenbacher
2016-03-15  7:12           ` Christoph Hellwig
2016-03-16 22:31             ` Andreas Gruenbacher
2016-02-29  8:17   ` [PATCH v18 13/22] vfs: Cache richacl in struct inode Andreas Gruenbacher
2016-02-29  8:17   ` [PATCH v18 19/22] richacl: Add richacl xattr handler Andreas Gruenbacher
     [not found]     ` <1456733847-17982-20-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-03-11 14:17       ` Christoph Hellwig
     [not found]         ` <20160311141735.GF14808-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-03-11 14:19           ` J. Bruce Fields
2016-03-15  7:10             ` Christoph Hellwig
2016-03-15 21:05               ` J. Bruce Fields
     [not found]                 ` <20160315210526.GC3658-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2016-03-21 16:09                   ` Christoph Hellwig
2016-03-11 14:01   ` [PATCH v18 00/22] Richacls (Core and Ext4) Christoph Hellwig
2016-03-11 14:07     ` J. Bruce Fields
     [not found]       ` <20160311140757.GB13178-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2016-03-12 21:12         ` Simo
2016-03-15  7:09       ` Christoph Hellwig
2016-03-11 16:11     ` Andreas Gruenbacher
2016-03-11 20:05       ` Steve French
2016-03-11 23:02         ` Jeremy Allison
2016-03-13 23:02           ` Andreas Gruenbacher
     [not found]             ` <CAHc6FU5Bq9afVdNogc9DQYyyXwLfUopXW5ZnSuct3N+NvKW4Rg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-03-14  3:54               ` Jeremy Allison
2016-03-15  7:14         ` Christoph Hellwig
     [not found]           ` <20160315071439.GE19747-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-03-16  3:40             ` Steve French
2016-03-15  7:11       ` Christoph Hellwig
     [not found]         ` <20160315071103.GC19747-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-03-15 15:45           ` Jeremy Allison
2016-03-15 20:17             ` Volker Lendecke
2016-03-16  3:28               ` Steve French
     [not found]               ` <20160315201700.GA22945-3ekOc4rQMZmzQB+pC5nmwQ@public.gmane.org>
2016-03-21 18:20                 ` Michael Adam
2016-02-29  8:17 ` [PATCH v18 20/22] vfs: Add richacl permission checking Andreas Gruenbacher
2016-02-29  8:17 ` [PATCH v18 21/22] ext4: Add richacl support Andreas Gruenbacher
     [not found]   ` <1456733847-17982-22-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-03-11 14:27     ` Christoph Hellwig [this message]
2016-03-13 23:49       ` Andreas Gruenbacher
     [not found]       ` <20160311142719.GG14808-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-03-13 23:08         ` Andreas Gruenbacher
2016-03-15  7:17           ` Christoph Hellwig
     [not found]             ` <20160315071707.GF19747-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-03-16 22:38               ` Andreas Gruenbacher
2016-03-14 13:02         ` Andreas Gruenbacher
2016-03-15  7:18           ` Christoph Hellwig
2016-02-29  8:17 ` [PATCH v18 22/22] ext4: Add richacl feature flag Andreas Gruenbacher

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=20160311142719.GG14808@infradead.org \
    --to=hch-wegcikhe2lqwvfeawa7xhq@public.gmane.org \
    --cc=adilger.kernel-m1MBpc4rdrD3fQ9qLvQP4Q@public.gmane.org \
    --cc=agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=aneesh.kumar-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
    --cc=anna.schumaker-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org \
    --cc=bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org \
    --cc=jlayton-vpEMnDpepFuMZCB2o+C8xQ@public.gmane.org \
    --cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-ext4-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=trond.myklebust-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org \
    --cc=tytso-3s7WtUTddSA@public.gmane.org \
    --cc=viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org \
    --cc=xfs-VZNHf3L845pBDgjK7y7TUQ@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).