linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] nfsd: better conform to setfacl's method for setting missing ACEs
@ 2023-07-21 14:26 Jeff Layton
  2023-07-21 16:29 ` Andreas Grünbacher
  0 siblings, 1 reply; 3+ messages in thread
From: Jeff Layton @ 2023-07-21 14:26 UTC (permalink / raw)
  To: Chuck Lever, Neil Brown, Olga Kornievskaia, Dai Ngo, Tom Talpey
  Cc: Andreas Grünbacher, linux-nfs, linux-kernel

Andreas pointed out that the way we're setting missing ACEs doesn't
quite conform to what setfacl does. Change it to better conform to
how setfacl does this.

Cc: Andreas Grünbacher <andreas.gruenbacher@gmail.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
 fs/nfsd/nfs4acl.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

Chuck, it might be best to fold this into the original patch, if it
looks ok.

diff --git a/fs/nfsd/nfs4acl.c b/fs/nfsd/nfs4acl.c
index 64e45551d1b6..9ec61bd0e11b 100644
--- a/fs/nfsd/nfs4acl.c
+++ b/fs/nfsd/nfs4acl.c
@@ -742,14 +742,15 @@ static int nfs4_acl_nfsv4_to_posix(struct nfs4_acl *acl,
 	 *  no owner, owning group, or others entry,  a  copy of  the  ACL
 	 *  owner, owning group, or others entry is added to the Default ACL."
 	 *
-	 * If none of the requisite ACEs were set, and some explicit user or group
-	 * ACEs were, copy the requisite entries from the effective set.
+	 * Copy any missing ACEs from the effective set.
 	 */
-	if (!default_acl_state.valid &&
-	    (default_acl_state.users->n || default_acl_state.groups->n)) {
-		default_acl_state.owner = effective_acl_state.owner;
-		default_acl_state.group = effective_acl_state.group;
-		default_acl_state.other = effective_acl_state.other;
+	if (default_acl_state.users->n || default_acl_state.groups->n) {
+		if (!(default_acl_state.valid & ACL_USER_OBJ))
+			default_acl_state.owner = effective_acl_state.owner;
+		if (!(default_acl_state.valid & ACL_GROUP_OBJ))
+			default_acl_state.group = effective_acl_state.group;
+		if (!(default_acl_state.valid & ACL_OTHER))
+			default_acl_state.other = effective_acl_state.other;
 	}
 
 	*pacl = posix_state_to_acl(&effective_acl_state, flags);
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-07-21 16:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-21 14:26 [PATCH] nfsd: better conform to setfacl's method for setting missing ACEs Jeff Layton
2023-07-21 16:29 ` Andreas Grünbacher
2023-07-21 16:50   ` Jeff Layton

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).