Linux CIFS filesystem development
 help / color / mirror / Atom feed
From: bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org (J. Bruce Fields)
To: Andreas Gruenbacher <agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [RFC v7 10/41] richacl: Permission check algorithm
Date: Fri, 11 Sep 2015 17:16:17 -0400	[thread overview]
Message-ID: <20150911211617.GF11677@fieldses.org> (raw)
In-Reply-To: <1441448856-13478-11-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

On Sat, Sep 05, 2015 at 12:27:05PM +0200, Andreas Gruenbacher wrote:
> A richacl roughly grants a requested access if the NFSv4 acl in the
> richacl grants the requested permissions according to the NFSv4
> permission check algorithm and the file mask that applies to the process
> includes the requested permissions.
> 
> Signed-off-by: Andreas Gruenbacher <agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> Acked-by: "J. Bruce Fields" <bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
> ---
>  fs/Makefile             |   2 +-
>  fs/richacl_inode.c      | 147 ++++++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/richacl.h |   3 +
>  3 files changed, 151 insertions(+), 1 deletion(-)
>  create mode 100644 fs/richacl_inode.c
> 
> diff --git a/fs/Makefile b/fs/Makefile
> index ddc43d8..1305047 100644
> --- a/fs/Makefile
> +++ b/fs/Makefile
> @@ -48,7 +48,7 @@ obj-$(CONFIG_SYSCTL)		+= drop_caches.o
>  
>  obj-$(CONFIG_FHANDLE)		+= fhandle.o
>  obj-$(CONFIG_FS_RICHACL)	+= richacl.o
> -richacl-y			:= richacl_base.o
> +richacl-y			:= richacl_base.o richacl_inode.o
>  
>  obj-y				+= quota/
>  
> diff --git a/fs/richacl_inode.c b/fs/richacl_inode.c
> new file mode 100644
> index 0000000..ba05993
> --- /dev/null
> +++ b/fs/richacl_inode.c
> @@ -0,0 +1,147 @@
> +/*
> + * Copyright (C) 2010  Novell, Inc.
> + * Copyright (C) 2015  Red Hat, Inc.
> + * Written by Andreas Gruenbacher <agruen-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License as published by the
> + * Free Software Foundation; either version 2, or (at your option) any
> + * later version.
> + *
> + * This program is distributed in the hope that it will be useful, but
> + * WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * General Public License for more details.
> + */
> +
> +#include <linux/sched.h>
> +#include <linux/module.h>
> +#include <linux/fs.h>
> +#include <linux/slab.h>
> +#include <linux/richacl.h>
> +
> +/**
> + * richacl_permission  -  richacl permission check algorithm
> + * @inode:	inode to check
> + * @acl:	rich acl of the inode
> + * @want:	requested access (MAY_* flags)
> + *
> + * Checks if the current process is granted @mask flags in @acl.
> + */
> +int
> +richacl_permission(struct inode *inode, const struct richacl *acl,
> +		   int want)
> +{
> +	const struct richace *ace;
> +	unsigned int mask = richacl_want_to_mask(want);
> +	unsigned int requested = mask, denied = 0;
> +	int in_owning_group = in_group_p(inode->i_gid);
> +	int in_owner_or_group_class = in_owning_group;
> +
> +	/*
> +	 * A process is
> +	 *   - in the owner file class if it owns the file,
> +	 *   - in the group file class if it is in the file's owning group or
> +	 *     it matches any of the user or group entries, and
> +	 *   - in the other file class otherwise.
> +	 * The file class is only relevant for determining which file mask to
> +	 * apply, which only happens for masked acls.
> +	 */
> +	if (acl->a_flags & RICHACL_MASKED) {
> +		if ((acl->a_flags & RICHACL_WRITE_THROUGH) &&
> +		    uid_eq(current_fsuid(), inode->i_uid)) {
> +			denied = requested & ~acl->a_owner_mask;
> +			goto out;
> +		}
> +	} else {
> +		/*
> +		 * When the acl is not masked, there is no need to determine if
> +		 * the process is in the group class and we can break out
> +		 * earlier of the loop below.
> +		 */
> +		in_owner_or_group_class = 1;
> +	}
> +
> +	/*
> +	 * Check if the acl grants the requested access and determine which
> +	 * file class the process is in.
> +	 */
> +	richacl_for_each_entry(ace, acl) {
> +		unsigned int ace_mask = ace->e_mask;
> +
> +		if (richace_is_inherit_only(ace))
> +			continue;
> +		if (richace_is_owner(ace)) {
> +			if (!uid_eq(current_fsuid(), inode->i_uid))
> +				continue;
> +			goto entry_matches_owner;
> +		} else if (richace_is_group(ace)) {
> +			if (!in_owning_group)
> +				continue;
> +		} else if (richace_is_unix_user(ace)) {
> +			if (!uid_eq(current_fsuid(), ace->e_id.uid))
> +				continue;
> +		} else if (richace_is_unix_group(ace)) {
> +			if (!in_group_p(ace->e_id.gid))
> +				continue;
> +		} else
> +			goto entry_matches_everyone;
> +
> +		/*
> +		 * Apply the group file mask to entries other than owner@ and
> +		 * everyone@ or user entries matching the owner.  This ensures
> +		 * that we grant the same permissions as the acl computed by
> +		 * richacl_apply_masks().
> +		 *
> +		 * Without this restriction, the following richacl would grant
> +		 * rw access to processes which are both the owner and in the
> +		 * owning group, but not to other users in the owning group,
> +		 * which could not be represented without masks:
> +		 *
> +		 *  owner:rw::mask
> +		 *  group@:rw::allow
> +		 */
> +		if ((acl->a_flags & RICHACL_MASKED) && richace_is_allow(ace))
> +			ace_mask &= acl->a_group_mask;

I'm having trouble understanding this.  I think the problem is that I
don't really understand the notation in your example.  Is a_group_mask
zero in that example?  I think it must be, in which case, OK I think I
get it.

(Though I still have to think about it a little more to convince myself
that richacl_apply_masks() always gets the same result.)

--b.

> +
> +entry_matches_owner:
> +		/* The process is in the owner or group file class. */
> +		in_owner_or_group_class = 1;
> +
> +entry_matches_everyone:
> +		/* Check which mask flags the ACE allows or denies. */
> +		if (richace_is_deny(ace))
> +			denied |= ace_mask & mask;
> +		mask &= ~ace_mask;
> +
> +		/*
> +		 * Keep going until we know which file class
> +		 * the process is in.
> +		 */
> +		if (!mask && in_owner_or_group_class)
> +			break;
> +	}
> +	denied |= mask;
> +
> +	if (acl->a_flags & RICHACL_MASKED) {
> +		/*
> +		 * The file class a process is in determines which file mask
> +		 * applies.  Check if that file mask also grants the requested
> +		 * access.
> +		 */
> +		if (uid_eq(current_fsuid(), inode->i_uid))
> +			denied |= requested & ~acl->a_owner_mask;
> +		else if (in_owner_or_group_class)
> +			denied |= requested & ~acl->a_group_mask;
> +		else {
> +			if (acl->a_flags & RICHACL_WRITE_THROUGH)
> +				denied = requested & ~acl->a_other_mask;
> +			else
> +				denied |= requested & ~acl->a_other_mask;
> +		}
> +	}
> +
> +out:
> +	return denied ? -EACCES : 0;
> +}
> +EXPORT_SYMBOL_GPL(richacl_permission);
> diff --git a/include/linux/richacl.h b/include/linux/richacl.h
> index e00f313..9768eeb 100644
> --- a/include/linux/richacl.h
> +++ b/include/linux/richacl.h
> @@ -300,4 +300,7 @@ extern unsigned int richacl_want_to_mask(unsigned int);
>  extern void richacl_compute_max_masks(struct richacl *);
>  extern struct richacl *richacl_chmod(struct richacl *, mode_t);
>  
> +/* richacl_inode.c */
> +extern int richacl_permission(struct inode *, const struct richacl *, int);
> +
>  #endif /* __RICHACL_H */
> -- 
> 2.4.3
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2015-09-11 21:16 UTC|newest]

Thread overview: 109+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-05 10:26 [RFC v7 00/41] Richacls Andreas Gruenbacher
2015-09-05 10:26 ` [RFC v7 04/41] vfs: Make the inode passed to inode_change_ok non-const Andreas Gruenbacher
2015-09-05 10:27 ` [RFC v7 05/41] vfs: Add permission flags for setting file attributes Andreas Gruenbacher
2015-09-05 10:27 ` [RFC v7 06/41] richacl: In-memory representation and helper functions Andreas Gruenbacher
2015-09-05 10:27 ` [RFC v7 07/41] richacl: Permission mapping functions Andreas Gruenbacher
2015-09-05 10:27 ` [RFC v7 12/41] vfs: Cache richacl in struct inode Andreas Gruenbacher
2015-09-05 10:27 ` [RFC v7 15/41] richacl: Automatic Inheritance Andreas Gruenbacher
2015-09-18 18:40   ` J. Bruce Fields
2015-09-21 21:19     ` Andreas Gruenbacher
2015-09-22  1:51       ` J. Bruce Fields
     [not found]         ` <20150922015146.GA15960-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-23 13:55           ` J. Bruce Fields
2015-09-05 10:27 ` [RFC v7 16/41] richacl: xattr mapping functions Andreas Gruenbacher
2015-09-05 10:27 ` [RFC v7 18/41] ext4: Add richacl support Andreas Gruenbacher
     [not found]   ` <1441448856-13478-19-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-23  2:30     ` Aneesh Kumar K.V
2015-09-05 10:27 ` [RFC v7 21/41] richacl: Move everyone@ aces down the acl Andreas Gruenbacher
2015-09-18 19:35   ` J. Bruce Fields
     [not found]     ` <20150918193524.GA22671-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-21 21:43       ` Andreas Gruenbacher
     [not found]         ` <CAHc6FU5m8KKSsEg18UhRSnVdsAzoFSD9pdLRv1DdDA==ZCQmdw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-22  1:52           ` J. Bruce Fields
2015-09-05 10:27 ` [RFC v7 23/41] richacl: Set the owner permissions to the owner mask Andreas Gruenbacher
2015-09-21 21:00   ` J. Bruce Fields
     [not found] ` <1441448856-13478-1-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-05 10:26   ` [RFC v7 01/41] vfs: Add IS_ACL() and IS_RICHACL() tests Andreas Gruenbacher
2015-09-05 10:26   ` [RFC v7 02/41] vfs: Add MAY_CREATE_FILE and MAY_CREATE_DIR permission flags Andreas Gruenbacher
2015-09-05 10:26   ` [RFC v7 03/41] vfs: Add MAY_DELETE_SELF and MAY_DELETE_CHILD " Andreas Gruenbacher
2015-09-06  8:14     ` [PATCH] " Andreas Gruenbacher
     [not found]       ` <1441527246-18189-1-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-11 20:30         ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 08/41] richacl: Compute maximum file masks from an acl Andreas Gruenbacher
2015-09-05 10:27   ` [RFC v7 09/41] richacl: Update the file masks in chmod() Andreas Gruenbacher
     [not found]     ` <1441448856-13478-10-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-11 20:35       ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 10/41] richacl: Permission check algorithm Andreas Gruenbacher
     [not found]     ` <1441448856-13478-11-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-11 21:16       ` J. Bruce Fields [this message]
     [not found]         ` <20150911211617.GF11677-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-11 22:12           ` Andreas Grünbacher
2015-09-17 17:30             ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 11/41] vfs: Cache base_acl objects in inodes Andreas Gruenbacher
2015-09-05 10:27   ` [RFC v7 13/41] richacl: Check if an acl is equivalent to a file mode Andreas Gruenbacher
2015-09-17 18:22     ` J. Bruce Fields
     [not found]       ` <20150917182219.GB13825-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-18  0:56         ` J. Bruce Fields
     [not found]           ` <20150918005607.GB16699-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-21 13:59             ` Austin S Hemmelgarn
     [not found]               ` <56000D2B.6000705-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-09-21 14:38                 ` J. Bruce Fields
     [not found]                   ` <20150921143817.GA11256-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-21 17:00                     ` Austin S Hemmelgarn
2015-09-21 17:48                       ` J. Bruce Fields
2015-09-21 15:31                 ` J. Bruce Fields
2015-09-21 23:26             ` Andreas Gruenbacher
2015-09-21 23:20       ` Andreas Gruenbacher
2015-09-17 18:37     ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 14/41] richacl: Create-time inheritance Andreas Gruenbacher
     [not found]     ` <1441448856-13478-15-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-18 17:58       ` J. Bruce Fields
     [not found]         ` <20150918175840.GA21506-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-21 20:37           ` Andreas Gruenbacher
2015-09-05 10:27   ` [RFC v7 17/41] vfs: Add richacl permission checking Andreas Gruenbacher
2015-09-05 10:27   ` [RFC v7 19/41] ext4: Add richacl feature flag Andreas Gruenbacher
2015-09-23  2:31     ` Aneesh Kumar K.V
2015-09-05 10:27   ` [RFC v7 20/41] richacl: acl editing helper functions Andreas Gruenbacher
     [not found]     ` <1441448856-13478-21-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-18 18:54       ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 22/41] richacl: Propagate everyone@ permissions to other aces Andreas Gruenbacher
     [not found]     ` <1441448856-13478-23-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-18 21:36       ` J. Bruce Fields
     [not found]         ` <20150918213611.GC22671-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-21 23:44           ` Andreas Gruenbacher
2015-09-18 21:56       ` J. Bruce Fields
     [not found]         ` <20150918215611.GD22671-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-21 19:24           ` J. Bruce Fields
     [not found]             ` <20150921192441.GA12968-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-23  1:24               ` Andreas Gruenbacher
     [not found]             ` <CAHc6FU5Ug3rN2-znFeABpdn+LCHgvzOnSRB4BCepNS6mToJVZg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-23  1:39               ` Andreas Gruenbacher
     [not found]                 ` <1442972384-22757-1-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-23  1:46                   ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 24/41] richacl: Set the other permissions to the other mask Andreas Gruenbacher
2015-09-23 14:03     ` J. Bruce Fields
     [not found]       ` <20150923140307.GB27083-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-23 14:12         ` Andreas Grünbacher
2015-09-05 10:27   ` [RFC v7 25/41] richacl: Isolate the owner and group classes Andreas Gruenbacher
     [not found]     ` <1441448856-13478-26-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-22 16:06       ` J. Bruce Fields
     [not found]         ` <20150922160637.GC15838-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-23 13:11           ` Andreas Gruenbacher
     [not found]             ` <CAHc6FU6gnPK5vdJynv0ze=mNju6V_1WuR99oXWC4Fdh2GFMVgA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-23 13:15               ` J. Bruce Fields
2015-09-22 19:02     ` J. Bruce Fields
     [not found]       ` <20150922190224.GA19127-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-23 13:33         ` Andreas Gruenbacher
     [not found]           ` <CAHc6FU7_+fbyG0mEu3pUkfaV72AM0DzJnBES=b--koXJgo0a2g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-25 11:25             ` Andreas Gruenbacher
     [not found]               ` <1443180341-22911-1-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-25 20:17                 ` J. Bruce Fields
2015-09-22 19:02     ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 26/41] richacl: Apply the file masks to a richacl Andreas Gruenbacher
2015-09-22 19:11     ` J. Bruce Fields
     [not found]       ` <20150922191108.GC19127-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-23 19:18         ` J. Bruce Fields
     [not found]           ` <20150923191832.GA29577-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-23 20:29             ` Andreas Gruenbacher
     [not found]               ` <CAHc6FU4YkLJUAQEfH7CG8sAzXYbGzg_ibyT7m26Fc1p26v1=VQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-23 20:33                 ` J. Bruce Fields
     [not found]                   ` <20150923203357.GC30521-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-23 20:40                     ` Andreas Gruenbacher
2015-09-23 21:05                       ` J. Bruce Fields
     [not found]                         ` <20150923210531.GC29349-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-23 22:14                           ` Andreas Gruenbacher
2015-09-24 15:28                             ` J. Bruce Fields
     [not found]                               ` <20150924152851.GC3823-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-24 15:48                                 ` Andreas Gruenbacher
     [not found]     ` <1441448856-13478-27-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-22 20:50       ` J. Bruce Fields
2015-09-24 18:33       ` J. Bruce Fields
     [not found]         ` <20150924183310.GE3823-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-09-25 16:21           ` [PATCH] richacl: Possible other write-through fix Andreas Gruenbacher
2015-09-25 16:45           ` Andreas Gruenbacher
     [not found]             ` <1443199559-4870-1-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-25 18:36               ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 27/41] richacl: Create richacl from mode values Andreas Gruenbacher
     [not found]     ` <1441448856-13478-28-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-23 20:11       ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 28/41] nfsd: Keep list of acls to dispose of in compoundargs Andreas Gruenbacher
     [not found]     ` <1441448856-13478-29-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-23 20:28       ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 29/41] nfsd: Use richacls as internal acl representation Andreas Gruenbacher
     [not found]     ` <1441448856-13478-30-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-24 19:29       ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 30/41] nfsd: Add richacl support Andreas Gruenbacher
2015-09-24 19:38     ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 31/41] nfsd: Add support for the v4.1 dacl attribute Andreas Gruenbacher
     [not found]     ` <1441448856-13478-32-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-24 19:59       ` J. Bruce Fields
2015-09-25 16:37         ` Andreas Gruenbacher
2015-09-05 10:27   ` [RFC v7 32/41] nfsd: Add support for the MAY_CREATE_{FILE,DIR} permissions Andreas Gruenbacher
     [not found]     ` <1441448856-13478-33-git-send-email-agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-24 20:01       ` J. Bruce Fields
2015-09-05 10:27   ` [RFC v7 33/41] richacl: Add support for unmapped identifiers Andreas Gruenbacher
2015-09-05 10:27   ` [RFC v7 35/41] sunrpc: Allow to demand-allocate pages to encode into Andreas Gruenbacher
2015-09-05 10:27   ` [RFC v7 36/41] sunrpc: Add xdr_init_encode_pages Andreas Gruenbacher
2015-09-05 10:27   ` [RFC v7 38/41] nfs: Remove unused xdr page offsets in getacl/setacl arguments Andreas Gruenbacher
2015-09-05 10:27   ` [RFC v7 39/41] nfs: Add richacl support Andreas Gruenbacher
2015-09-05 10:27   ` [RFC v7 40/41] nfs: Add support for the v4.1 dacl attribute Andreas Gruenbacher
2015-09-05 10:27   ` [RFC v7 41/41] richacl: uapi header split Andreas Gruenbacher
2015-09-05 10:27 ` [RFC v7 34/41] ext4: Don't allow unmapped identifiers in richacls Andreas Gruenbacher
2015-09-05 10:27 ` [RFC v7 37/41] nfs: Fix GETATTR bitmap verification 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=20150911211617.GF11677@fieldses.org \
    --to=bfields-uc3wqj2krung9huczpvpmw@public.gmane.org \
    --cc=agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-cifs-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=linux-security-module-u79uwXL29TY76Z2rM5mHXA@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