Message ID | 1578947683-21011-10-git-send-email-aleksandar.markovic@rt-rk.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | linux-user: Misc patches for 5.0 | expand |
Le 13/01/2020 à 21:34, Aleksandar Markovic a écrit : > From: Aleksandar Markovic <amarkovic@wavecomp.com> > > A very specific thing for these two ioctls is that their code > implies that their third argument is of type 'long', but the > kernel uses that argument as if it is of type 'int'. This anomaly > is recognized also in commit 6080723 (linux-user: Implement > FS_IOC_GETFLAGS and FS_IOC_SETFLAGS ioctls). > > Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com> > --- > linux-user/ioctls.h | 2 ++ > linux-user/syscall_defs.h | 8 +++++--- > 2 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h > index c6b9d6a..c44f42e 100644 > --- a/linux-user/ioctls.h > +++ b/linux-user/ioctls.h > @@ -138,6 +138,8 @@ > > IOCTL(FS_IOC_GETFLAGS, IOC_R, MK_PTR(TYPE_INT)) > IOCTL(FS_IOC_SETFLAGS, IOC_W, MK_PTR(TYPE_INT)) > + IOCTL(FS_IOC_GETVERSION, IOC_R, MK_PTR(TYPE_INT)) > + IOCTL(FS_IOC_SETVERSION, IOC_W, MK_PTR(TYPE_INT)) > > #ifdef CONFIG_USBFS > /* USB ioctls */ > diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h > index 98c2119..f68a8b6 100644 > --- a/linux-user/syscall_defs.h > +++ b/linux-user/syscall_defs.h > @@ -911,12 +911,14 @@ struct target_pollfd { > #define TARGET_FICLONE TARGET_IOW(0x94, 9, int) > #define TARGET_FICLONERANGE TARGET_IOW(0x94, 13, struct file_clone_range) > > -/* Note that the ioctl numbers claim type "long" but the actual type > - * used by the kernel is "int". > +/* > + * Note that the ioctl numbers for FS_IOC_<GET|SET><FLAGS|VERSION> > + * claim type "long" but the actual type used by the kernel is "int". > */ > #define TARGET_FS_IOC_GETFLAGS TARGET_IOR('f', 1, abi_long) > #define TARGET_FS_IOC_SETFLAGS TARGET_IOW('f', 2, abi_long) > - > +#define TARGET_FS_IOC_GETVERSION TARGET_IOR('v', 1, abi_long) > +#define TARGET_FS_IOC_SETVERSION TARGET_IOW('v', 2, abi_long) > #define TARGET_FS_IOC_FIEMAP TARGET_IOWR('f',11,struct fiemap) > > /* usb ioctls */ > Reviewed-by: Laurent Vivier <laurent@vivier.eu>
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index c6b9d6a..c44f42e 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -138,6 +138,8 @@ IOCTL(FS_IOC_GETFLAGS, IOC_R, MK_PTR(TYPE_INT)) IOCTL(FS_IOC_SETFLAGS, IOC_W, MK_PTR(TYPE_INT)) + IOCTL(FS_IOC_GETVERSION, IOC_R, MK_PTR(TYPE_INT)) + IOCTL(FS_IOC_SETVERSION, IOC_W, MK_PTR(TYPE_INT)) #ifdef CONFIG_USBFS /* USB ioctls */ diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 98c2119..f68a8b6 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -911,12 +911,14 @@ struct target_pollfd { #define TARGET_FICLONE TARGET_IOW(0x94, 9, int) #define TARGET_FICLONERANGE TARGET_IOW(0x94, 13, struct file_clone_range) -/* Note that the ioctl numbers claim type "long" but the actual type - * used by the kernel is "int". +/* + * Note that the ioctl numbers for FS_IOC_<GET|SET><FLAGS|VERSION> + * claim type "long" but the actual type used by the kernel is "int". */ #define TARGET_FS_IOC_GETFLAGS TARGET_IOR('f', 1, abi_long) #define TARGET_FS_IOC_SETFLAGS TARGET_IOW('f', 2, abi_long) - +#define TARGET_FS_IOC_GETVERSION TARGET_IOR('v', 1, abi_long) +#define TARGET_FS_IOC_SETVERSION TARGET_IOW('v', 2, abi_long) #define TARGET_FS_IOC_FIEMAP TARGET_IOWR('f',11,struct fiemap) /* usb ioctls */