Re: [PATCH] hfs: return -EPERM for unsupported setattr changes
Viacheslav Dubeyko <[email protected]>
| Newsgroups | org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Wed, 2026-09-16 at 19:40 -0300, Davy Felipe wrote: > hfs_inode_setattr() rejects unsupported UID, GID and mode changes, > but returns the value stored in error when the filesystem is not > mounted with the quiet option. > > At this point error is zero, as execution has already passed a > successful setattr_prepare() call. As a result, unsupported attribute > changes are incorrectly reported to userspace as successful even > though the inode remains unchanged. > > Return -EPERM for these operations while preserving the existing > behavior for quiet mounts. > > A chown test on an HFS image reproduces the problem. Without the fix, > chown 1234:1234 returns success while ownership remains 0:0. With the > fix, the same operation fails with EPERM and ownership remains > unchanged. > > Signed-off-by: Davy Felipe <[email protected]> > --- > fs/hfs/inode.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c > index 2aef3c36a150..cce3a7bb95e9 100644 > --- a/fs/hfs/inode.c > +++ b/fs/hfs/inode.c > @@ -663,7 +663,7 @@ int hfs_inode_setattr(struct mnt_idmap *idmap, > struct dentry *dentry, > ((S_ISDIR(inode->i_mode) && > (attr->ia_mode != inode->i_mode)) || > (attr->ia_mode & ~HFS_VALID_MODE_BITS)))) { > - return hsb->s_quiet ? 0 : error; > + return hsb->s_quiet ? 0 : -EPERM; > } > > /* map file permissions to the closest allowable permissions > in HFS */ Looks good. Reviewed-by: Viacheslav Dubeyko <[email protected]> Thanks, Slava.