qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] linux-user: Fix incorrect TARGET_BLKBSZGET, TAR


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH] linux-user: Fix incorrect TARGET_BLKBSZGET, TARGET_BLKBSZSET
Date: Tue, 24 Jul 2012 13:24:18 +0100

On 24 July 2012 13:02, Andreas Färber <address@hidden> wrote:
> Am 23.07.2012 20:05, schrieb Peter Maydell:
>> The definitions for the ioctl numbers TARGET_BLKBSZGET and
>> TARGET_BLKBSZSET had the wrong size parameters (they are defined
>> with size_t, not int, even though the ioctl implementations themselves
>> read and write integers). Since commit 354a0008 we now have an
>> ioctl wrapper definition for BLKBSZGET and so on an x86-64-to-x86-64
>> linux-user binary we were triggering the mismatch warning in
>> syscall_init().
>>
>> Signed-off-by: Peter Maydell <peter.maydell>
>
> Beep :)

Hrm, how did that happen?

Signed-off-by: Peter Maydell <address@hidden>

>>  linux-user/syscall_defs.h |    4 ++--
>>  1 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
>> index a79b67d..0b239c4 100644
>> --- a/linux-user/syscall_defs.h
>> +++ b/linux-user/syscall_defs.h
>> @@ -832,8 +832,8 @@ struct target_pollfd {
>>  #define TARGET_BLKSECTGET TARGET_IO(0x12,103)/* get max sectors per request 
>> (ll_rw_blk.c) */
>>  #define TARGET_BLKSSZGET  TARGET_IO(0x12,104)/* get block device sector 
>> size */
>>  /* A jump here: 108-111 have been used for various private purposes. */
>> -#define TARGET_BLKBSZGET  TARGET_IOR(0x12,112,int)
>> -#define TARGET_BLKBSZSET  TARGET_IOW(0x12,113,int)
>> +#define TARGET_BLKBSZGET  TARGET_IOR(0x12, 112, abi_ulong)
>> +#define TARGET_BLKBSZSET  TARGET_IOW(0x12, 113, abi_ulong)
>>  #define TARGET_BLKGETSIZE64 TARGET_IOR(0x12,114,abi_ulong)
>>                                               /* return device size in bytes
>>                                                  (u64 *arg) */
>
> For the usual suspects this looks right.
> But does abi_ulong correctly handle ppc64abi32 and sparc32plus?

abi_ulong is always the size of a target's 'unsigned long'.
In this case the actual type used in the kernel's definition
of this ioctl number is 'size_t', but I believe that for
all our architectures (including the TARGET_ABI32 ones you
list) this is the same width as 'unsigned long' (though
not necessarily actually 'unsigned long'...)

-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]