]> git.baikalelectronics.ru Git - kernel.git/commit
x86, x32: Use compat shims for io_{setup,submit}
authorMike Frysinger <vapier@gentoo.org>
Mon, 5 May 2014 00:43:15 +0000 (20:43 -0400)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 5 May 2014 00:49:22 +0000 (17:49 -0700)
commit72937d093961bed0a690c5669de35c1f232063f6
treefd0dc1133936b7ad2240e4dd60a959cc12530ebc
parent9cfe9a0f84f48513d06a3b0897b12f075dc945f6
x86, x32: Use compat shims for io_{setup,submit}

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 <vapier@gentoo.org>
Link: http://lkml.kernel.org/r/1399250595-5005-1-git-send-email-vapier@gentoo.org
Cc: H.J. Lu <hjl.tools@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Cc: <stable@vger.kernel.org> # v3.4+
arch/x86/syscalls/syscall_64.tbl