diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2016-07-05 16:36:29 +0100 |
---|---|---|
committer | Riku Voipio <riku.voipio@linaro.org> | 2016-07-19 15:23:16 +0300 |
commit | f2c2fb50be13aca9c449d9156817c915d9cd2acb (patch) | |
tree | bb0bba272cbe33de2107ca3105e7bc24d6687a3f /linux-user/ioctls.h | |
parent | a4a2c51f9006b9e6ee3b94f5ce87aed066f3446a (diff) |
linux-user: Correct type for LOOP_GET_STATUS{,64} ioctls
The LOOP_GET_STATUS and LOOP_GET_STATUS64 ioctls were incorrectly
defined as IOC_W rather than IOC_R, which meant we weren't
correctly copying the information back from the kernel to the guest.
The loop_info64 structure definition was also missing a member
and using the wrong type for several 32-bit fields.
In particular, this meant that "kpartx -d image.img" didn't work
and "losetup -a" behaved strangely. Correct the ioctl type definitions.
Reported-by: Chanho Park <chanho61.park@samsung.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
Diffstat (limited to 'linux-user/ioctls.h')
-rw-r--r-- | linux-user/ioctls.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index a066d9b3f6..33ede9cd9e 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -322,9 +322,9 @@ IOCTL(LOOP_SET_FD, 0, TYPE_INT) IOCTL(LOOP_CLR_FD, 0, TYPE_INT) IOCTL(LOOP_SET_STATUS, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info))) - IOCTL(LOOP_GET_STATUS, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info))) + IOCTL(LOOP_GET_STATUS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_loop_info))) IOCTL(LOOP_SET_STATUS64, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info64))) - IOCTL(LOOP_GET_STATUS64, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info64))) + IOCTL(LOOP_GET_STATUS64, IOC_R, MK_PTR(MK_STRUCT(STRUCT_loop_info64))) IOCTL(LOOP_CHANGE_FD, 0, TYPE_INT) IOCTL(LOOP_CTL_ADD, 0, TYPE_INT) |