mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2026-01-27 12:47:24 +01:00
Revert "fs: make vfs_fileattr_[get|set] return -EOPNOTSUPP"
commit4dd5b5ac08upstream. This reverts commit474b155adf. This patch caused regression in ioctl_setflags(). Underlying filesystems use EOPNOTSUPP to indicate that flag is not supported. This error is also gets converted in ioctl_setflags(). Therefore, for unsupported flags error changed from EOPNOSUPP to ENOIOCTLCMD. Link: https://lore.kernel.org/linux-xfs/a622643f-1585-40b0-9441-cf7ece176e83@kernel.org/ Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> Signed-off-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
9937b59ec1
commit
0cfb126205
|
|
@ -84,7 +84,7 @@ int vfs_fileattr_get(struct dentry *dentry, struct file_kattr *fa)
|
|||
int error;
|
||||
|
||||
if (!inode->i_op->fileattr_get)
|
||||
return -EOPNOTSUPP;
|
||||
return -ENOIOCTLCMD;
|
||||
|
||||
error = security_inode_file_getattr(dentry, fa);
|
||||
if (error)
|
||||
|
|
@ -270,7 +270,7 @@ int vfs_fileattr_set(struct mnt_idmap *idmap, struct dentry *dentry,
|
|||
int err;
|
||||
|
||||
if (!inode->i_op->fileattr_set)
|
||||
return -EOPNOTSUPP;
|
||||
return -ENOIOCTLCMD;
|
||||
|
||||
if (!inode_owner_or_capable(idmap, inode))
|
||||
return -EPERM;
|
||||
|
|
@ -312,8 +312,6 @@ int ioctl_getflags(struct file *file, unsigned int __user *argp)
|
|||
int err;
|
||||
|
||||
err = vfs_fileattr_get(file->f_path.dentry, &fa);
|
||||
if (err == -EOPNOTSUPP)
|
||||
err = -ENOIOCTLCMD;
|
||||
if (!err)
|
||||
err = put_user(fa.flags, argp);
|
||||
return err;
|
||||
|
|
@ -335,8 +333,6 @@ int ioctl_setflags(struct file *file, unsigned int __user *argp)
|
|||
fileattr_fill_flags(&fa, flags);
|
||||
err = vfs_fileattr_set(idmap, dentry, &fa);
|
||||
mnt_drop_write_file(file);
|
||||
if (err == -EOPNOTSUPP)
|
||||
err = -ENOIOCTLCMD;
|
||||
}
|
||||
}
|
||||
return err;
|
||||
|
|
@ -349,8 +345,6 @@ int ioctl_fsgetxattr(struct file *file, void __user *argp)
|
|||
int err;
|
||||
|
||||
err = vfs_fileattr_get(file->f_path.dentry, &fa);
|
||||
if (err == -EOPNOTSUPP)
|
||||
err = -ENOIOCTLCMD;
|
||||
if (!err)
|
||||
err = copy_fsxattr_to_user(&fa, argp);
|
||||
|
||||
|
|
@ -371,8 +365,6 @@ int ioctl_fssetxattr(struct file *file, void __user *argp)
|
|||
if (!err) {
|
||||
err = vfs_fileattr_set(idmap, dentry, &fa);
|
||||
mnt_drop_write_file(file);
|
||||
if (err == -EOPNOTSUPP)
|
||||
err = -ENOIOCTLCMD;
|
||||
}
|
||||
}
|
||||
return err;
|
||||
|
|
|
|||
|
|
@ -536,8 +536,6 @@ int fuse_fileattr_get(struct dentry *dentry, struct file_kattr *fa)
|
|||
cleanup:
|
||||
fuse_priv_ioctl_cleanup(inode, ff);
|
||||
|
||||
if (err == -ENOTTY)
|
||||
err = -EOPNOTSUPP;
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
@ -574,7 +572,5 @@ int fuse_fileattr_set(struct mnt_idmap *idmap,
|
|||
cleanup:
|
||||
fuse_priv_ioctl_cleanup(inode, ff);
|
||||
|
||||
if (err == -ENOTTY)
|
||||
err = -EOPNOTSUPP;
|
||||
return err;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ static int ovl_copy_fileattr(struct inode *inode, const struct path *old,
|
|||
err = ovl_real_fileattr_get(old, &oldfa);
|
||||
if (err) {
|
||||
/* Ntfs-3g returns -EINVAL for "no fileattr support" */
|
||||
if (err == -EOPNOTSUPP || err == -EINVAL)
|
||||
if (err == -ENOTTY || err == -EINVAL)
|
||||
return 0;
|
||||
pr_warn("failed to retrieve lower fileattr (%pd2, err=%i)\n",
|
||||
old->dentry, err);
|
||||
|
|
|
|||
|
|
@ -720,7 +720,10 @@ int ovl_real_fileattr_get(const struct path *realpath, struct file_kattr *fa)
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
return vfs_fileattr_get(realpath->dentry, fa);
|
||||
err = vfs_fileattr_get(realpath->dentry, fa);
|
||||
if (err == -ENOIOCTLCMD)
|
||||
err = -ENOTTY;
|
||||
return err;
|
||||
}
|
||||
|
||||
int ovl_fileattr_get(struct dentry *dentry, struct file_kattr *fa)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user