Le 16/01/2020 à 23:49, 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).
>
> Reviewed-by: Laurent Vivier <laurent@vivier.eu>
> 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 */
>
Applied to my linux-user branch.
Thanks,
Laurent