From eb69f26fe8e2177cfb7cbf859a23fc5ac59cacb7 Mon Sep 17 00:00:00 2001 From: Daniel Rosenberg Date: Thu, 20 Jan 2022 16:37:23 -0800 Subject: [PATCH] ANDROID: fuse: Fix umasking in backing We should only apply the mask ourselves if we're not using POSIX acls Bug: 215212818 Test: com.android.cts.externalstorageapp.CommonExternalStorageTest #testAllPackageDirsWritable, verify files and cache permissions Signed-off-by: Daniel Rosenberg Change-Id: If105afe62a60b93cbce1ca5ab5caf11f008aa7db --- fs/fuse/backing.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/fs/fuse/backing.c b/fs/fuse/backing.c index 6e24c55b8e9a..069cb15c4b33 100644 --- a/fs/fuse/backing.c +++ b/fs/fuse/backing.c @@ -1091,8 +1091,11 @@ int fuse_mknod_backing( return -EBADF; inode_lock_nested(backing_inode, I_MUTEX_PARENT); + mode = fmi->mode; + if (!IS_POSIXACL(backing_inode)) + mode &= ~fmi->umask; err = vfs_mknod(backing_inode, backing_path.dentry, - fmi->mode & ~fmi->umask, new_decode_dev(fmi->rdev)); + mode, new_decode_dev(fmi->rdev)); inode_unlock(backing_inode); if (err) goto out; @@ -1165,7 +1168,10 @@ int fuse_mkdir_backing( return -EBADF; inode_lock_nested(backing_inode, I_MUTEX_PARENT); - err = vfs_mkdir(backing_inode, backing_path.dentry, fmi->mode & ~fmi->umask); + mode = fmi->mode; + if (!IS_POSIXACL(backing_inode)) + mode &= ~fmi->umask; + err = vfs_mkdir(backing_inode, backing_path.dentry, mode); if (err) goto out; if (d_really_is_negative(backing_path.dentry) ||