2022-06-23 09:34:06

by Ryusuke Konishi

[permalink] [raw]
Subject: [PATCH] nilfs2: fix incorrect masking of permission flags for symlinks

The permission flags of newly created symlinks are wrongly dropped on
nilfs2 with the current umask value even though symlinks should have
777 (rwxrwxrwx) permissions:

$ umask
0022
$ touch file && ln -s file symlink; ls -l file symlink
-rw-r--r--. 1 root root 0 Jun 23 16:29 file
lrwxr-xr-x. 1 root root 4 Jun 23 16:29 symlink -> file

This fixes the bug by inserting a missing check that excludes
symlinks.

Reported-by: Tommy Pettersson <[email protected]>
Reported-by: Ciprian Craciun <[email protected]>
Signed-off-by: Ryusuke Konishi <[email protected]>
Tested-by: Ryusuke Konishi <[email protected]>
---
fs/nilfs2/nilfs.h | 3 +++
1 file changed, 3 insertions(+)

diff --git a/fs/nilfs2/nilfs.h b/fs/nilfs2/nilfs.h
index 1344f7d475d3..aecda4fc95f5 100644
--- a/fs/nilfs2/nilfs.h
+++ b/fs/nilfs2/nilfs.h
@@ -198,6 +198,9 @@ static inline int nilfs_acl_chmod(struct inode *inode)

static inline int nilfs_init_acl(struct inode *inode, struct inode *dir)
{
+ if (S_ISLNK(inode->i_mode))
+ return 0;
+
inode->i_mode &= ~current_umask();
return 0;
}
--
1.8.3.1