From: Colin Ian King Date: Wed, 30 Mar 2016 22:00:23 +0000 (+0100) Subject: Add support 32 bit FS_IOC32_{GET|SET}FLAGS compat ioctls X-Git-Tag: zfs-0.7.0-rc1~205 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f7b939bdbcd5d6fd11a638316138d1752acae78e;p=zfs Add support 32 bit FS_IOC32_{GET|SET}FLAGS compat ioctls We need 32 bit userspace FS_IOC32_GETFLAGS and FS_IOC32_SETFLAGS compat ioctls for systems such as powerpc64. We use the normal compat ioctl idiom as used by a variety of file systems to provide this support. Signed-off-by: Colin Ian King Signed-off-by: Brian Behlendorf Closes #4477 --- diff --git a/module/zfs/zpl_file.c b/module/zfs/zpl_file.c index a23bc7d8d..5c430c7ca 100644 --- a/module/zfs/zpl_file.c +++ b/module/zfs/zpl_file.c @@ -24,6 +24,9 @@ */ +#ifdef CONFIG_COMPAT +#include +#endif #include #include #include @@ -798,7 +801,17 @@ zpl_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) static long zpl_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { - return (zpl_ioctl(filp, cmd, arg)); + switch (cmd) { + case FS_IOC32_GETFLAGS: + cmd = FS_IOC_GETFLAGS; + break; + case FS_IOC32_SETFLAGS: + cmd = FS_IOC_SETFLAGS; + break; + default: + return (-ENOTTY); + } + return (zpl_ioctl(filp, cmd, (unsigned long)compat_ptr(arg))); } #endif /* CONFIG_COMPAT */