@@ -84,7 +84,7 @@ int vfs_fileattr_get(struct dentry *dentry, struct file_kattr *fa)
8484 int error ;
8585
8686 if (!inode -> i_op -> fileattr_get )
87- return - EOPNOTSUPP ;
87+ return - ENOIOCTLCMD ;
8888
8989 error = security_inode_file_getattr (dentry , fa );
9090 if (error )
@@ -270,7 +270,7 @@ int vfs_fileattr_set(struct mnt_idmap *idmap, struct dentry *dentry,
270270 int err ;
271271
272272 if (!inode -> i_op -> fileattr_set )
273- return - EOPNOTSUPP ;
273+ return - ENOIOCTLCMD ;
274274
275275 if (!inode_owner_or_capable (idmap , inode ))
276276 return - EPERM ;
@@ -312,8 +312,6 @@ int ioctl_getflags(struct file *file, unsigned int __user *argp)
312312 int err ;
313313
314314 err = vfs_fileattr_get (file -> f_path .dentry , & fa );
315- if (err == - EOPNOTSUPP )
316- err = - ENOIOCTLCMD ;
317315 if (!err )
318316 err = put_user (fa .flags , argp );
319317 return err ;
@@ -335,8 +333,6 @@ int ioctl_setflags(struct file *file, unsigned int __user *argp)
335333 fileattr_fill_flags (& fa , flags );
336334 err = vfs_fileattr_set (idmap , dentry , & fa );
337335 mnt_drop_write_file (file );
338- if (err == - EOPNOTSUPP )
339- err = - ENOIOCTLCMD ;
340336 }
341337 }
342338 return err ;
@@ -349,8 +345,6 @@ int ioctl_fsgetxattr(struct file *file, void __user *argp)
349345 int err ;
350346
351347 err = vfs_fileattr_get (file -> f_path .dentry , & fa );
352- if (err == - EOPNOTSUPP )
353- err = - ENOIOCTLCMD ;
354348 if (!err )
355349 err = copy_fsxattr_to_user (& fa , argp );
356350
@@ -371,8 +365,6 @@ int ioctl_fssetxattr(struct file *file, void __user *argp)
371365 if (!err ) {
372366 err = vfs_fileattr_set (idmap , dentry , & fa );
373367 mnt_drop_write_file (file );
374- if (err == - EOPNOTSUPP )
375- err = - ENOIOCTLCMD ;
376368 }
377369 }
378370 return err ;
@@ -424,6 +416,8 @@ SYSCALL_DEFINE5(file_getattr, int, dfd, const char __user *, filename,
424416 }
425417
426418 error = vfs_fileattr_get (filepath .dentry , & fa );
419+ if (error == - ENOIOCTLCMD || error == - ENOTTY )
420+ error = - EOPNOTSUPP ;
427421 if (error )
428422 return error ;
429423
@@ -491,6 +485,8 @@ SYSCALL_DEFINE5(file_setattr, int, dfd, const char __user *, filename,
491485 if (!error ) {
492486 error = vfs_fileattr_set (mnt_idmap (filepath .mnt ),
493487 filepath .dentry , & fa );
488+ if (error == - ENOIOCTLCMD || error == - ENOTTY )
489+ error = - EOPNOTSUPP ;
494490 mnt_drop_write (filepath .mnt );
495491 }
496492
0 commit comments