[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 04/12] linux-user: Make ipc syscal
From: |
David Gibson |
Subject: |
Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 04/12] linux-user: Make ipc syscall's third argument an abi_long |
Date: |
Tue, 26 Aug 2014 10:39:34 +1000 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Tue, Aug 12, 2014 at 01:53:35PM -0500, Tom Musta wrote:
> For those target ABIs that use the ipc system call (e.g. POWER),
> the third argument is used in the shmat path as a pointer. It
> therefore must be declared as an abi_long (versus int) so that
> the address bits are not lost in truncation. In fact, all arguments
> to do_ipc should be declared as abit_long.
>
> In fact, it makes more sense for all of the arguments to be declaried
> as abi_long (except call).
>
> Signed-off-by: Tom Musta <address@hidden>
> ---
> V2: Changed all do_ipc arguments (except "call") to abi_long per Peter
> Maydell's review.
So, that certainly makes sense for second and third. But 'first'
really is defined as 'int' in the kernel source; what's the reason for
using a long here?
>
> linux-user/syscall.c | 8 ++++----
> 1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index bee1f4e..3a4f432 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -3125,8 +3125,8 @@ static inline abi_long do_shmdt(abi_ulong shmaddr)
> #ifdef TARGET_NR_ipc
> /* ??? This only works with linear mappings. */
> /* do_ipc() must return target values and target errnos. */
> -static abi_long do_ipc(unsigned int call, int first,
> - int second, int third,
> +static abi_long do_ipc(unsigned int call, abi_long first,
> + abi_long second, abi_long third,
> abi_long ptr, abi_long fifth)
> {
> int version;
> @@ -3148,9 +3148,9 @@ static abi_long do_ipc(unsigned int call, int first,
> /* The semun argument to semctl is passed by value, so dereference
> the
> * ptr argument. */
> abi_ulong atptr;
> - get_user_ual(atptr, (abi_ulong)ptr);
> + get_user_ual(atptr, ptr);
> ret = do_semctl(first, second, third,
> - (union target_semun)(abi_ulong) atptr);
> + (union target_semun) atptr);
> break;
> }
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
pgpFCBFaUYuBj.pgp
Description: PGP signature
- Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 01/12] linux-user: PPC64 semid_ds Doesnt Include _unused1 and _unused2, (continued)
- [Qemu-ppc] [V2 PATCH 02/12] linux-user: Dereference Pointer Argument to ipc/semctl Sys Call, Tom Musta, 2014/08/12
- [Qemu-ppc] [V2 PATCH 05/12] linux-user: Conditionally Pass Attribute Pointer to mq_open(), Tom Musta, 2014/08/12
- [Qemu-ppc] [V2 PATCH 03/12] linux-user: Properly Handle semun Structure In Cross-Endian Situations, Tom Musta, 2014/08/12
- [Qemu-ppc] [V2 PATCH 06/12] linux-user: Detect Negative Message Sizes in msgsnd System Call, Tom Musta, 2014/08/12
- [Qemu-ppc] [V2 PATCH 04/12] linux-user: Make ipc syscall's third argument an abi_long, Tom Musta, 2014/08/12
- Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 04/12] linux-user: Make ipc syscall's third argument an abi_long,
David Gibson <=
- [Qemu-ppc] [V2 PATCH 08/12] linux-user: Detect fault in sched_rr_get_interval, Tom Musta, 2014/08/12
- [Qemu-ppc] [V2 PATCH 07/12] linux-user: Handle NULL sched_param argument to sched_*, Tom Musta, 2014/08/12
- [Qemu-ppc] [V2 PATCH 10/12] linux-user: clock_nanosleep errno Handling on PPC, Tom Musta, 2014/08/12
- [Qemu-ppc] [V2 PATCH 09/12] linux-user: Minimum Sig Handler Stack Size for PPC64 ELF V2, Tom Musta, 2014/08/12
- [Qemu-ppc] [V2 PATCH 12/12] linux-user: writev Partial Writes, Tom Musta, 2014/08/12