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>
This commit is contained in:
parent
a4a2c51f90
commit
f2c2fb50be
@ -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)
|
||||
|
@ -103,10 +103,11 @@ STRUCT(loop_info64,
|
||||
TYPE_ULONGLONG, /* lo_inode */
|
||||
TYPE_ULONGLONG, /* lo_rdevice */
|
||||
TYPE_ULONGLONG, /* lo_offset */
|
||||
TYPE_ULONG, /* lo_number */
|
||||
TYPE_ULONG, /* lo_encrypt_type */
|
||||
TYPE_ULONG, /* lo_encrypt_key_size */
|
||||
TYPE_ULONG, /* lo_flags */
|
||||
TYPE_ULONGLONG, /* lo_sizelimit */
|
||||
TYPE_INT, /* lo_number */
|
||||
TYPE_INT, /* lo_encrypt_type */
|
||||
TYPE_INT, /* lo_encrypt_key_size */
|
||||
TYPE_INT, /* lo_flags */
|
||||
MK_ARRAY(TYPE_CHAR, 64), /* lo_name */
|
||||
MK_ARRAY(TYPE_CHAR, 64), /* lo_crypt_name */
|
||||
MK_ARRAY(TYPE_CHAR, 32), /* lo_encrypt_key */
|
||||
|
Loading…
Reference in New Issue
Block a user