| From 2fe8b2d5578d7d142982e3bf62e4c0caf8b8fe02 Mon Sep 17 00:00:00 2001 |
| From: Hou Tao <houtao1@huawei.com> |
| Date: Sat, 9 Feb 2019 16:54:20 +0800 |
| Subject: ubifs: Reject unsupported ioctl flags explicitly |
| |
| From: Hou Tao <houtao1@huawei.com> |
| |
| commit 2fe8b2d5578d7d142982e3bf62e4c0caf8b8fe02 upstream. |
| |
| 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> |
| Signed-off-by: Richard Weinberger <richard@nod.at> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/ubifs/ioctl.c | 8 ++++++++ |
| 1 file changed, 8 insertions(+) |
| |
| --- 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, unsi |
| 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; |
| |