Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20161014151359.GR28065@port70.net>
Date: Fri, 14 Oct 2016 17:13:59 +0200
From: Szabolcs Nagy <nsz@...t70.net>
To: musl@...ts.openwall.com
Subject: Re: [PATCH 1/7] fix preadv2 and pwritev2 syscall numbers on
 x32 for linux v4.8

* Khem Raj <raj.khem@...il.com> [2016-10-14 14:09:10 +0200]:

> On Sun, Oct 9, 2016 at 6:58 PM, Szabolcs Nagy <nsz@...t70.net> wrote:
> > the numbers were wrong in musl, but they were also wrong in the kernel
> > and got fixed in v4.8 commit 3ebfd81f7fb3e81a754e37283b7f38c62244641a
> 
> what happens if we now build musl trunk with linux kernel 3.7 ?
> 

on v3.7 a raw syscall(__NR_preadv2,..) should return -ENOSYS.

these syscalls appeared in v4.6 (with wrong numbers: they overlap
with existing x32 numbers), but by accident i added them using
the x86_64 numbers to musl (most x32 syscalls are mapped to
x86_64 numbers), which means there is no overlap in musl.

with >=v4.6 kernel musl would try to use the x86_64 syscalls from
x32 which is wrong and i don't know how that plays out in practice.

this affects musl >=v1.1.15

linux v4.8 fixed the numbers, so we should fix them too.

> > ---
> >  arch/x32/bits/syscall.h.in | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/x32/bits/syscall.h.in b/arch/x32/bits/syscall.h.in
> > index cf2b4f1..e94dcb2 100644
> > --- a/arch/x32/bits/syscall.h.in
> > +++ b/arch/x32/bits/syscall.h.in
> > @@ -280,8 +280,6 @@
> >  #define __NR_membarrier (0x40000000 + 324)
> >  #define __NR_mlock2 (0x40000000 + 325)
> >  #define __NR_copy_file_range (0x40000000 + 326)
> > -#define __NR_preadv2 (0x40000000 + 327)
> > -#define __NR_pwritev2 (0x40000000 + 328)
> >
> >  #define __NR_rt_sigaction (0x40000000 + 512)
> >  #define __NR_rt_sigreturn (0x40000000 + 513)
> > @@ -317,4 +315,6 @@
> >  #define __NR_io_setup (0x40000000 + 543)
> >  #define __NR_io_submit (0x40000000 + 544)
> >  #define __NR_execveat (0x40000000 + 545)
> > +#define __NR_preadv2 (0x40000000 + 546)
> > +#define __NR_pwritev2 (0x40000000 + 547)
> >
> > --
> > 2.10.0
> >

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.