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 <[email protected]> > --- > 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
pgpCCHKMjohsg.pgp
Description: PGP signature
