]> www.infradead.org Git - users/hch/misc.git/commitdiff
fs: return EOPNOTSUPP from file_setattr/file_getattr syscalls
authorAndrey Albershteyn <aalbersh@redhat.com>
Wed, 8 Oct 2025 12:44:18 +0000 (14:44 +0200)
committerChristian Brauner <brauner@kernel.org>
Fri, 10 Oct 2025 11:46:00 +0000 (13:46 +0200)
These syscalls call to vfs_fileattr_get/set functions which return
ENOIOCTLCMD if filesystem doesn't support setting file attribute on an
inode. For syscalls EOPNOTSUPP would be more appropriate return error.

Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/file_attr.c

index 460b2dd21a85281bdfa5fda96c1a21441e8ab191..1dcec88c0680506162ecb5ba540dbea3dc318f63 100644 (file)
@@ -416,6 +416,8 @@ SYSCALL_DEFINE5(file_getattr, int, dfd, const char __user *, filename,
        }
 
        error = vfs_fileattr_get(filepath.dentry, &fa);
+       if (error == -ENOIOCTLCMD || error == -ENOTTY)
+               error = -EOPNOTSUPP;
        if (error)
                return error;
 
@@ -483,6 +485,8 @@ SYSCALL_DEFINE5(file_setattr, int, dfd, const char __user *, filename,
        if (!error) {
                error = vfs_fileattr_set(mnt_idmap(filepath.mnt),
                                         filepath.dentry, &fa);
+               if (error == -ENOIOCTLCMD || error == -ENOTTY)
+                       error = -EOPNOTSUPP;
                mnt_drop_write(filepath.mnt);
        }