Re: [PATCH v2 20/21] fuse: use passthrough getattr in setattr suid/sgid handling
Amir Goldstein <[email protected]> Sun, 17 May 2026 00:23:20 +0200
| Newsgroups | org.kernel.vger.linux-unionfs,dev.linux.lists.fuse-devel |
|---|---|
| Message-ID | <CAOQ4uxiJaLtcuGNrYej6WCzTfu=fFfy4VLj7pUmfM+hHT0Z3Pw@mail.gmail.com> |
On Sat, May 16, 2026 at 3:20 AM Joanne Koong <[email protected]> wrote: > > On Fri, May 15, 2026 at 5:53 PM Joanne Koong <[email protected]> wrote: > > > > When refreshing i_mode for suid/sgid kill during setattr, use > > passthrough getattr if the inode has that enabled. > > > > Signed-off-by: Joanne Koong <[email protected]> > > --- > > 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); > > I left this part untouched from v1 but there was a discussion [1] > about whether to enforce that setattr must be passed through if > getattr is passed through [1]. I think there might be some use cases > though where having only getattr passed through and not setattr is > useful (eg server wants fast stat() but needs to intercept attribute > changes for access control or policy enforcement). Of course there is. I think I was misunderstood. What I meant was that *specifically* for the getattr for this purpose of killpriv, it may make sense to ask the server's mode for calculating the setattr mode for the server. But this is just a hunch. I could be wrong and I have no strong feelings either way. > I'm not sure if you > still feel it's better to keep it simple with enforcing that > getattr+setattr rmust always be passed through together, Amir, but if > so I'm happy to add that in. No need. Thanks, Amir.