Hi, User programs are passing integer pointers as argument to these ioctls. Many filesystems(xfs, ext) honour this to prevent corrupting the other four bytes. This was discussed in the fsdevel mailing list with subject "Argument type for FS_IOC_GETFLAGS/FS_IOC_SETFLAGS ioctls" Please see if we can be compatible by breaking correctness. Thanks. Signed-off-by: Ratna Manoj Bolla <manoj.br@xxxxxxxxx> --- fs/fuse/ioctl.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/fs/fuse/ioctl.c b/fs/fuse/ioctl.c index 572ce8a82ceb..9e0ec0b3375e 100644 --- a/fs/fuse/ioctl.c +++ b/fs/fuse/ioctl.c @@ -264,7 +264,16 @@ long fuse_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg, struct iovec *iov = iov_page; iov->iov_base = (void __user *)arg; - iov->iov_len = _IOC_SIZE(cmd); + + switch (cmd) { + case FS_IOC_GETFLAGS: + case FS_IOC_SETFLAGS: + iov->iov_len = sizeof(int); + break; + default: + iov->iov_len = _IOC_SIZE(cmd); + break; + } if (_IOC_DIR(cmd) & _IOC_WRITE) { in_iov = iov; -- 2.43.5