When refreshing i_mode for suid/sgid kill during setattr, use passthrough getattr if the inode has that enabled. Signed-off-by: Joanne Koong --- fs/fuse/dir.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index b67b3b334e69..fd1b3fd86968 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -2524,7 +2524,11 @@ static int fuse_setattr(struct mnt_idmap *idmap, struct dentry *entry, * ia_mode calculation may have used stale i_mode. * Refresh and recalculate. */ - ret = fuse_do_getattr(idmap, inode, NULL, file); + if (fuse_passthrough_op(inode, FUSE_GETATTR)) + ret = fuse_passthrough_getattr(inode, NULL, + STATX_MODE, 0); + else + ret = fuse_do_getattr(idmap, inode, NULL, file); if (ret) return ret; -- 2.52.0