On Tue, Sep 19, 2023 at 10:18:07AM +0200, Max Kellermann wrote:
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 succeeded. 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.
The fix is in the wrong place if !IS_POSIXACL() umask stripping happens in the VFS. So if at all we need to fix stripping umask for O_TMPFILE in the vfs.
Have you verified that commit ac6800e279a2 ("fs: Add missing umask strip in vfs_tmpfile") doesn't already fix this?