lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Mon, 5 May 2014 11:33:49 -0400
From:	Kyle McMartin <kmcmarti@...hat.com>
To:	Mike Frysinger <vapier@...too.org>
Cc:	x86@...nel.org, Thomas Gleixner <tglx@...utronix.de>,
	Ingo Molnar <mingo@...hat.com>,
	"H. Peter Anvin" <hpa@...or.com>, linux-kernel@...r.kernel.org,
	linux-aio@...ck.org, Jeff Moyer <jmoyer@...hat.com>
Subject: Re: [PATCH] x32: use compat shims for io_{setup,submit}

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 <vapier@...too.org>

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 majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ