From: Catalin Marinas <catalin.marinas@arm.com>
To: Szabolcs Nagy <nsz@port70.net>
Cc: musl@lists.openwall.com, Rich Felker <dalias@libc.org>,
Andrew Pinski <apinski@cavium.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"pinskia@gmail.com" <pinskia@gmail.com>,
"libc-alpha@sourceware.org" <libc-alpha@sourceware.org>,
Marcus Shawcroft <Marcus.Shawcroft@arm.com>
Subject: Re: [musl] Re: [PATCHv3 00/24] ILP32 support in ARM64
Date: Thu, 12 Feb 2015 17:07:15 +0000 [thread overview]
Message-ID: <20150212170715.GB25491@e104818-lin.cambridge.arm.com> (raw)
In-Reply-To: <20150212081234.GL32724@port70.net>
On Thu, Feb 12, 2015 at 09:12:34AM +0100, Szabolcs Nagy wrote:
> * Szabolcs Nagy <nsz@port70.net> [2015-02-11 20:05:37 +0100]:
> > (i think this is also a problem if userspace code uses syscall(2) directly,
> > libc cannot possibly know where to signextend and the kernel side does not
> > do the fixup right now)
>
> nobody picked up this issue, is this resolved?
>
> ie. if userspace calls syscall(SYS_foo,...) directly with 32bit
> longs does it always work out correctly on the kernel side?
I think the only way to solve this is to have syscall wrappers in the
kernel rather than glibc.
> the sign extension is a problem for signed long arguments,
> i only found these in the kernel:
>
> fs/buffer.c:SYSCALL_DEFINE2(bdflush, int, func, long, data)
This is part of the deprecated syscalls, it is not used on new user
ABIs.
> fs/open.c:SYSCALL_DEFINE2(truncate, const char __user *, path, long, length)
The kernel uses a long (64-bit) here and the user ABI defines this as an
off_t. With x32, this should be a long long (__kernel_long_t), so not a
problem.
> fs/aio.c:SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr,
> fs/aio.c- struct iocb __user * __user *, iocbpp)
>
> fs/aio.c:SYSCALL_DEFINE5(io_getevents, aio_context_t, ctx_id,
> fs/aio.c- long, min_nr,
> fs/aio.c- long, nr,
These would need some int->long conversion for nr, min_nr (it may be
done in x32 glibc already but as you said it would not work via
syscall() directly).
> kernel/ptrace.c:SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr,
> kernel/ptrace.c- unsigned long, data)
The pid in user space would be pid_t which is 32-bit. The kernel seems
to use it as pid_t afterwards, so looks safe. For addr and data, I guess
it needs wrappers to zero the top part.
> ipc/syscall.c:SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second,
> ipc/syscall.c- unsigned long, third, void __user *, ptr, long, fifth)
ipc(2) shows the first, second, third as ints. I guess some kernel
wrapper is needed here as well.
--
Catalin
next prev parent reply other threads:[~2015-02-12 17:07 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20141002155217.GH32147@e104818-lin.cambridge.arm.com>
2015-02-10 18:13 ` Rich Felker
2015-02-11 17:39 ` Catalin Marinas
2015-02-11 19:05 ` Szabolcs Nagy
2015-02-11 19:22 ` [musl] " H.J. Lu
2015-02-11 19:50 ` arnd
2015-02-11 20:12 ` Rich Felker
2015-02-11 20:47 ` Jens Gustedt
2015-02-11 21:02 ` arnd
2015-02-11 21:09 ` arnd
2015-02-11 21:37 ` [musl] " Rich Felker
2015-02-16 17:20 ` Arnd Bergmann
2015-02-16 17:51 ` [musl] " Rich Felker
2015-02-16 19:38 ` Arnd Bergmann
2015-02-12 8:12 ` Szabolcs Nagy
2015-02-12 17:07 ` Catalin Marinas [this message]
2015-02-11 19:21 ` Rich Felker
2015-02-12 18:17 ` Catalin Marinas
2015-02-12 18:59 ` arnd
2015-02-13 13:33 ` Catalin Marinas
2015-02-13 16:30 ` Rich Felker
2015-02-13 17:33 ` Catalin Marinas
2015-02-13 18:37 ` Rich Felker
2015-02-16 14:40 ` Arnd Bergmann
2015-02-16 15:38 ` Rich Felker
2015-02-16 16:54 ` Arnd Bergmann
2015-02-11 18:33 ` H.J. Lu
2015-02-11 19:02 ` Rich Felker
2015-02-11 19:16 ` H.J. Lu
2015-02-11 19:25 ` Rich Felker
2015-02-11 19:34 ` H.J. Lu
2015-02-11 19:47 ` Rich Felker
2015-02-11 19:57 ` H.J. Lu
2015-02-11 20:15 ` Andy Lutomirski
2015-02-12 15:50 ` Catalin Marinas
2015-02-12 16:13 ` Rich Felker
2015-02-12 16:30 ` H.J. Lu
2015-02-12 17:00 ` Rich Felker
2015-02-11 21:41 ` Joseph Myers
2015-02-11 19:04 ` Josiah Worcester
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150212170715.GB25491@e104818-lin.cambridge.arm.com \
--to=catalin.marinas@arm.com \
--cc=Marcus.Shawcroft@arm.com \
--cc=apinski@cavium.com \
--cc=dalias@libc.org \
--cc=libc-alpha@sourceware.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=musl@lists.openwall.com \
--cc=nsz@port70.net \
--cc=pinskia@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).