On Sun, May 04, 2014 at 08:43:15PM -0400, Mike Frysinger wrote:
> The io_setup takes a pointer to a context id of type aio_context_t.
> This in turn is typed to a __kernel_ulong_t.  We could tweak the
> exported headers to define this as a 64bit quantity for specific
> ABIs, but since we already have a 32bit compat shim for the x86 ABI,
> let's just re-use that logic.  The libaio package is also written to
> expect this as a pointer type, so a compat shim would simplify that.
> 
> The io_submit func operates on an array of pointers to iocb structs.
> Padding out the array to be 64bit aligned is a huge pain, so convert
> it over to the existing compat shim too.
> 
> We don't convert io_getevents to the compat func as its only purpose
> is to handle the timespec struct, and the x32 ABI uses 64bit times.
> 
> With this change, the libaio package can now pass its testsuite when
> built for the x32 ABI.
> 
> Signed-off-by: Mike Frysinger <[email protected]>

yeah, this looks like it should fix the issue in a much simpler way.
nice work Mike.

regards, Kyle

> ---
>  arch/x86/syscalls/syscall_64.tbl | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/x86/syscalls/syscall_64.tbl 
> b/arch/x86/syscalls/syscall_64.tbl
> index 04376ac..ec255a1 100644
> --- a/arch/x86/syscalls/syscall_64.tbl
> +++ b/arch/x86/syscalls/syscall_64.tbl
> @@ -212,10 +212,10 @@
>  203  common  sched_setaffinity       sys_sched_setaffinity
>  204  common  sched_getaffinity       sys_sched_getaffinity
>  205  64      set_thread_area
> -206  common  io_setup                sys_io_setup
> +206  64      io_setup                sys_io_setup
>  207  common  io_destroy              sys_io_destroy
>  208  common  io_getevents            sys_io_getevents
> -209  common  io_submit               sys_io_submit
> +209  64      io_submit               sys_io_submit
>  210  common  io_cancel               sys_io_cancel
>  211  64      get_thread_area
>  212  common  lookup_dcookie          sys_lookup_dcookie
> @@ -359,3 +359,5 @@
>  540  x32     process_vm_writev       compat_sys_process_vm_writev
>  541  x32     setsockopt              compat_sys_setsockopt
>  542  x32     getsockopt              compat_sys_getsockopt
> +543  x32     io_setup                compat_sys_io_setup
> +544  x32     io_submit               compat_sys_io_submit
> -- 
> 1.9.2
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to