[PATCH v2] linux-user: Use correct type for FIBMAP and FIGETBSZ emulation

Bastian Blank posted 1 patch 2 weeks, 3 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/l6slswtmabktu6g23so3sldafschilwbp3kqolny3lppjezosi@hn6ptmklek4q
Maintainers: Laurent Vivier <laurent@vivier.eu>
linux-user/ioctls.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH v2] linux-user: Use correct type for FIBMAP and FIGETBSZ emulation
Posted by Bastian Blank 2 weeks, 3 days ago
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 <waldi@debian.org>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3185
---
 linux-user/ioctls.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index 3b41128..2f62fd2 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)))
-- 
2.51.0
Re: [PATCH v2] linux-user: Use correct type for FIBMAP and FIGETBSZ emulation
Posted by Michael Tokarev 2 weeks, 3 days ago
On 10/28/25 15:16, Bastian Blank wrote:
> 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 <waldi@debian.org>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3185

Reviwed-by: Michael Tokarev <mjt@tls.msk.ru>

Again, I can pick this up through qemu-trivial if there's no
objection, Laurent?

And Cc: qemu-stable.

Thanks,

/mjt
Re: [PATCH v2] linux-user: Use correct type for FIBMAP and FIGETBSZ emulation
Posted by Richard Henderson 2 weeks, 2 days ago
On 10/28/25 14:55, Michael Tokarev wrote:
> On 10/28/25 15:16, Bastian Blank wrote:
>> 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 <waldi@debian.org>
>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3185
> 
> Reviwed-by: Michael Tokarev <mjt@tls.msk.ru>
> 
> Again, I can pick this up through qemu-trivial if there's no
> objection, Laurent?

Please do.

r~

Re: [PATCH v2] linux-user: Use correct type for FIBMAP and FIGETBSZ emulation
Posted by Peter Maydell 2 weeks, 3 days ago
On Tue, 28 Oct 2025 at 12:58, Bastian Blank <bblank@thinkmo.de> wrote:
>
> 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 <waldi@debian.org>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3185
> ---

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

thanks
-- PMM
Re: [PATCH v2] linux-user: Use correct type for FIBMAP and FIGETBSZ emulation
Posted by Helge Deller 2 weeks, 3 days ago
On 10/28/25 14:11, Peter Maydell wrote:
> On Tue, 28 Oct 2025 at 12:58, Bastian Blank <bblank@thinkmo.de> wrote:
>>
>> 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 <waldi@debian.org>
>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3185
>> ---
> 
> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

Reviewed-by: Helge Deller <deller@gmx.de>