summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoakim Sindholt <opensource@zhasha.com>2024-03-18 14:22:31 +0300
committerEric Van Hensbergen <ericvh@kernel.org>2024-03-28 16:59:23 +0300
commitcd25e15e57e68a6b18dc9323047fe9c68b99290b (patch)
tree53784baf6b0f0f48e9835586426e37a89f4a761c
parent8d025e2092e29bfd13e56c78e22af25fac83c8ec (diff)
downloadlinux-cd25e15e57e68a6b18dc9323047fe9c68b99290b.tar.xz
fs/9p: only translate RWX permissions for plain 9P2000
Garbage in plain 9P2000's perm bits is allowed through, which causes it to be able to set (among others) the suid bit. This was presumably not the intent since the unix extended bits are handled explicitly and conditionally on .u. Signed-off-by: Joakim Sindholt <opensource@zhasha.com> Signed-off-by: Eric Van Hensbergen <ericvh@kernel.org>
-rw-r--r--fs/9p/vfs_inode.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index b01b1bbf2493..9612fdb563a3 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -83,7 +83,7 @@ static int p9mode2perm(struct v9fs_session_info *v9ses,
int res;
int mode = stat->mode;
- res = mode & S_IALLUGO;
+ res = mode & 0777; /* S_IRWXUGO */
if (v9fs_proto_dotu(v9ses)) {
if ((mode & P9_DMSETUID) == P9_DMSETUID)
res |= S_ISUID;