Message ID | 20200407142243.2032-1-mk@cm4all.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3,1/4] fs/posix_acl: apply umask if superblock disables ACL support | expand |
On Tue, Apr 07, 2020 at 04:22:40PM +0200, Max Kellermann wrote: > > - if (S_ISLNK(*mode) || !IS_POSIXACL(dir)) > + if (S_ISLNK(*mode)) > return 0; > > + if (!IS_POSIXACL(dir)) { > + *mode &= ~current_umask(); > + return 0; > + } > + I think the first hunk is obviously correct, but I don't think we need the second one, as the handling of the get_acl() eturn value should do the right thing. If you want to optimize it a bit, it might be worth to move the !IS_POSIXACL check in get_acl to the top of the function, before checking the cached ACL.
diff --git a/fs/posix_acl.c b/fs/posix_acl.c index 249672bf54fe..e5e7a2295b99 100644 --- a/fs/posix_acl.c +++ b/fs/posix_acl.c @@ -589,9 +589,14 @@ posix_acl_create(struct inode *dir, umode_t *mode, *acl = NULL; *default_acl = NULL; - if (S_ISLNK(*mode) || !IS_POSIXACL(dir)) + if (S_ISLNK(*mode)) return 0; + if (!IS_POSIXACL(dir)) { + *mode &= ~current_umask(); + return 0; + } + p = get_acl(dir, ACL_TYPE_DEFAULT); if (!p || p == ERR_PTR(-EOPNOTSUPP)) { *mode &= ~current_umask();