All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] fs/posix_acl: apply umask if superblock disables ACL support
@ 2019-07-03 12:47 Max Kellermann
  2019-07-03 12:47 ` [PATCH 2/4] fs/ext4/acl: apply umask if ACL support is disabled Max Kellermann
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Max Kellermann @ 2019-07-03 12:47 UTC (permalink / raw)
  To: linux-fsdevel, linux-nfs, trond.myklebust, bfields, gregkh, tytso,
	adilger.kernel, hughd, anna.schumaker
  Cc: linux-kernel, Max Kellermann

The function posix_acl_create() applies the umask only if the inode
has no ACL (= NULL) or if ACLs are not supported by the filesystem
driver (= -EOPNOTSUPP).

However, this happens only after after the IS_POSIXACL() check
succeeeded.  If the superblock doesn't enable ACL support, umask will
never be applied.  A filesystem which has no ACL support will of
course not enable SB_POSIXACL, rendering the umask-applying code path
unreachable.

This fixes a bug which causes the umask to be ignored with O_TMPFILE
on tmpfs:

 https://github.com/MusicPlayerDaemon/MPD/issues/558
 https://bugs.gentoo.org/show_bug.cgi?id=686142#c3
 https://bugzilla.kernel.org/show_bug.cgi?id=203625

Signed-off-by: Max Kellermann <max.kellermann@gmail.com>
---
 fs/posix_acl.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/fs/posix_acl.c b/fs/posix_acl.c
index 2fd0fde16fe1..815f7b36ef94 100644
--- a/fs/posix_acl.c
+++ b/fs/posix_acl.c
@@ -588,9 +588,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();
-- 
2.20.1


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

end of thread, other threads:[~2019-07-03 12:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-07-03 12:47 [PATCH 1/4] fs/posix_acl: apply umask if superblock disables ACL support Max Kellermann
2019-07-03 12:47 ` [PATCH 2/4] fs/ext4/acl: apply umask if ACL support is disabled Max Kellermann
2019-07-03 12:47 ` [PATCH 3/4] linux/fs.h: fix umask on NFS with CONFIG_FS_POSIX_ACL=n Max Kellermann
2019-07-03 12:47 ` [PATCH 4/4] nfs/super: check NFS_CAP_ACLS instead of the NFS version Max Kellermann

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.