From: Joakim Sindholt Date: Mon, 18 Mar 2024 11:22:31 +0000 (+0100) Subject: fs/9p: only translate RWX permissions for plain 9P2000 X-Git-Tag: v6.8.10~163 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=157d468e34fdd3cb1ddc07c2be32fb3b02826b02;p=thirdparty%2Fkernel%2Fstable.git fs/9p: only translate RWX permissions for plain 9P2000 [ Upstream commit cd25e15e57e68a6b18dc9323047fe9c68b99290b ] 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 Signed-off-by: Eric Van Hensbergen Signed-off-by: Sasha Levin --- diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 7d42f0c6c644f..ae3623bc4ef46 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;