From: Bastian Blank Date: Tue, 28 Oct 2025 12:16:12 +0000 (+0100) Subject: linux-user: Use correct type for FIBMAP and FIGETBSZ emulation X-Git-Tag: v10.2.0-rc1~39^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7c7089321670fb51022a1c4493cbcc69aa288a0f;p=thirdparty%2Fqemu.git linux-user: Use correct type for FIBMAP and FIGETBSZ emulation Both the FIBMAP and FIGETBSZ ioctl get "int *" (pointer to 32bit integer) as argument, not "long *" as specified in qemu. Using the correct type makes the emulation work in cross endian context. Both ioctl does not seem to be documented. However the kernel implementation has always used "int *". Signed-off-by: Bastian Blank Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3185 Reviewed-by: Peter Maydell Reviewed-by: Helge Deller Reviwed-by: Michael Tokarev Signed-off-by: Michael Tokarev --- diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 3b41128fd7..2f62fd2cb9 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -130,7 +130,7 @@ IOCTL(FDTWADDLE, 0, TYPE_NULL) IOCTL(FDEJECT, 0, TYPE_NULL) - IOCTL(FIBMAP, IOC_W | IOC_R, MK_PTR(TYPE_LONG)) + IOCTL(FIBMAP, IOC_W | IOC_R, MK_PTR(TYPE_INT)) #ifdef FICLONE IOCTL(FICLONE, IOC_W, TYPE_INT) IOCTL(FICLONERANGE, IOC_W, MK_PTR(MK_STRUCT(STRUCT_file_clone_range))) @@ -145,7 +145,7 @@ IOCTL(FITRIM, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_fstrim_range))) #endif - IOCTL(FIGETBSZ, IOC_R, MK_PTR(TYPE_LONG)) + IOCTL(FIGETBSZ, IOC_R, MK_PTR(TYPE_INT)) #ifdef CONFIG_FIEMAP IOCTL_SPECIAL(FS_IOC_FIEMAP, IOC_W | IOC_R, do_ioctl_fs_ioc_fiemap, MK_PTR(MK_STRUCT(STRUCT_fiemap)))