Message ID | 1343066720-21806-1-git-send-email-peter.maydell@linaro.org |
---|---|
State | Accepted |
Commit | c8b0bf545631b55f9e8288252a7b026a97872dd3 |
Headers | show |
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 :) > --- > 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? Or is this inside some #ifdef block? Andreas
On 24 July 2012 13:02, Andreas Färber <afaerber@suse.de> 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 <peter.maydell@linaro.org> >> 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
Ping? Patchwork URL: http://patchwork.ozlabs.org/patch/172730/ let me know if you want a v2 patch rather than just hand-fixing the signed-off-by line snafu. thanks -- PMM On 23 July 2012 19:05, Peter Maydell <peter.maydell@linaro.org> wrote: > 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> > --- > 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) */ > -- > 1.7.5.4 > >
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) */
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> --- linux-user/syscall_defs.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)