Message ID | 20190209085420.2375-1-houtao1@huawei.com |
---|---|
State | Accepted |
Delegated to: | Richard Weinberger |
Headers | show |
Series | ubifs: reject unsupported ioctl flags explicitly | expand |
ping ? On 2019/2/9 16:54, Hou Tao wrote: > Reject unsupported ioctl flags explicitly, so the following command > on a regular ubifs file will fail: > chattr +d ubifs_file > > And xfstests generic/424 will pass. > > Signed-off-by: Hou Tao <houtao1@huawei.com> > --- > fs/ubifs/ioctl.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/fs/ubifs/ioctl.c b/fs/ubifs/ioctl.c > index 0164bcc827f8..daf9f93e15de 100644 > --- a/fs/ubifs/ioctl.c > +++ b/fs/ubifs/ioctl.c > @@ -28,6 +28,11 @@ > #include <linux/mount.h> > #include "ubifs.h" > > +/* Need to be kept consistent with checked flags in ioctl2ubifs() */ > +#define UBIFS_SUPPORTED_IOCTL_FLAGS \ > + (FS_COMPR_FL | FS_SYNC_FL | FS_APPEND_FL | \ > + FS_IMMUTABLE_FL | FS_DIRSYNC_FL) > + > /** > * ubifs_set_inode_flags - set VFS inode flags. > * @inode: VFS inode to set flags for > @@ -169,6 +174,9 @@ long ubifs_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > if (get_user(flags, (int __user *) arg)) > return -EFAULT; > > + if (flags & ~UBIFS_SUPPORTED_IOCTL_FLAGS) > + return -EOPNOTSUPP; > + > if (!S_ISDIR(inode->i_mode)) > flags &= ~FS_DIRSYNC_FL; > >
Am Mittwoch, 13. Februar 2019, 07:50:42 CET schrieb Hou Tao:
> ping ?
No need to panic. Just returned from vacation and still didn't reach
to bottom of my mail pile....
Thanks,
//richard
Am Samstag, 9. Februar 2019, 09:54:20 CET schrieb Hou Tao: > Reject unsupported ioctl flags explicitly, so the following command > on a regular ubifs file will fail: > chattr +d ubifs_file > > And xfstests generic/424 will pass. > > Signed-off-by: Hou Tao <houtao1@huawei.com> > --- > fs/ubifs/ioctl.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/fs/ubifs/ioctl.c b/fs/ubifs/ioctl.c > index 0164bcc827f8..daf9f93e15de 100644 > --- a/fs/ubifs/ioctl.c > +++ b/fs/ubifs/ioctl.c > @@ -28,6 +28,11 @@ > #include <linux/mount.h> > #include "ubifs.h" > > +/* Need to be kept consistent with checked flags in ioctl2ubifs() */ > +#define UBIFS_SUPPORTED_IOCTL_FLAGS \ > + (FS_COMPR_FL | FS_SYNC_FL | FS_APPEND_FL | \ > + FS_IMMUTABLE_FL | FS_DIRSYNC_FL) > + > /** > * ubifs_set_inode_flags - set VFS inode flags. > * @inode: VFS inode to set flags for > @@ -169,6 +174,9 @@ long ubifs_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > if (get_user(flags, (int __user *) arg)) > return -EFAULT; > > + if (flags & ~UBIFS_SUPPORTED_IOCTL_FLAGS) > + return -EOPNOTSUPP; > + > if (!S_ISDIR(inode->i_mode)) > flags &= ~FS_DIRSYNC_FL; > > Makes sense, will queue for the next merge window. :-) Thanks, //richard
diff --git a/fs/ubifs/ioctl.c b/fs/ubifs/ioctl.c index 0164bcc827f8..daf9f93e15de 100644 --- a/fs/ubifs/ioctl.c +++ b/fs/ubifs/ioctl.c @@ -28,6 +28,11 @@ #include <linux/mount.h> #include "ubifs.h" +/* Need to be kept consistent with checked flags in ioctl2ubifs() */ +#define UBIFS_SUPPORTED_IOCTL_FLAGS \ + (FS_COMPR_FL | FS_SYNC_FL | FS_APPEND_FL | \ + FS_IMMUTABLE_FL | FS_DIRSYNC_FL) + /** * ubifs_set_inode_flags - set VFS inode flags. * @inode: VFS inode to set flags for @@ -169,6 +174,9 @@ long ubifs_ioctl(struct file *file, unsigned int cmd, unsigned long arg) if (get_user(flags, (int __user *) arg)) return -EFAULT; + if (flags & ~UBIFS_SUPPORTED_IOCTL_FLAGS) + return -EOPNOTSUPP; + if (!S_ISDIR(inode->i_mode)) flags &= ~FS_DIRSYNC_FL;
Reject unsupported ioctl flags explicitly, so the following command on a regular ubifs file will fail: chattr +d ubifs_file And xfstests generic/424 will pass. Signed-off-by: Hou Tao <houtao1@huawei.com> --- fs/ubifs/ioctl.c | 8 ++++++++ 1 file changed, 8 insertions(+)