RE: in_compat_syscall() on x86

2021-01-06 Thread David Laight
From: Andy Lutomirski > Sent: 05 January 2021 17:35 > > On Tue, Jan 5, 2021 at 1:53 AM David Laight wrote: > > ... ... > > > > I also wondered about resetting it to zero when an x32 system call > > > > exits (rather than entry to a 64bit one). > > > > > > > > For ia32 the flag is set (with |=)

Re: in_compat_syscall() on x86

2021-01-05 Thread Al Viro
On Tue, Jan 05, 2021 at 06:03:15PM -0600, Eric W. Biederman wrote: > > Yes, the current mainline is bloody awful in that area (PRSTATUS_SIZE and > > SET_PR_FPVALID are not for weak stomach), but that's really not hard to > > get into sane shape - -next had that done in last cycle and I'm currently

Re: in_compat_syscall() on x86

2021-01-05 Thread Bernd Petrovitsch
Hi all! On Tue, 2021-01-05 at 18:03 -0600, Eric W. Biederman wrote: [...] > Maybe I am wrong and there are interesting users of x32. All I remember > is that last time this was discussed someone found a distro that > actually shipped an x32 build to users. Which was just enough users to

Re: in_compat_syscall() on x86

2021-01-05 Thread Eric W. Biederman
Al Viro writes: > On Mon, Jan 04, 2021 at 06:47:38PM -0600, Eric W. Biederman wrote: >> >> It is defined in the Ubuntu kernel configs I've got lurking: >> >> Both 3.8.0-19_generic (Ubuntu 13.04) and 5.4.0-56_generic (probably >> >> 20.04). >> >> Which is probably why it is in my test builds

Re: in_compat_syscall() on x86

2021-01-05 Thread Andy Lutomirski
On Tue, Jan 5, 2021 at 1:53 AM David Laight wrote: > > From: Andy Lutomirski > > Sent: 04 January 2021 23:04 > ... > > >> The x32 system calls have their own system call table and it would be > > >> trivial to set a flag like TS_COMPAT when looking up a system call from > > >> that table. I

RE: in_compat_syscall() on x86

2021-01-05 Thread David Laight
From: Andy Lutomirski > Sent: 04 January 2021 23:04 ... > >> The x32 system calls have their own system call table and it would be > >> trivial to set a flag like TS_COMPAT when looking up a system call from > >> that table. I expect such a change would be purely in the noise. > > > > Certainly a

Re: in_compat_syscall() on x86

2021-01-04 Thread Al Viro
On Mon, Jan 04, 2021 at 06:47:38PM -0600, Eric W. Biederman wrote: > >> It is defined in the Ubuntu kernel configs I've got lurking: > >> Both 3.8.0-19_generic (Ubuntu 13.04) and 5.4.0-56_generic (probably 20.04). > >> Which is probably why it is in my test builds (I've just cut out > >> a lot of

Re: in_compat_syscall() on x86

2021-01-04 Thread Eric W. Biederman
Andy Lutomirski writes: >> On Jan 4, 2021, at 2:36 PM, David Laight wrote: >> >> From: Eric W. Biederman >>> Sent: 04 January 2021 20:41 >>> >>> Al Viro writes: >>> >>>> On Mon, Jan 04, 2021 at 12:16:56PM +000

Re: in_compat_syscall() on x86

2021-01-04 Thread Andy Lutomirski
> On Jan 4, 2021, at 2:36 PM, David Laight wrote: > > From: Eric W. Biederman >> Sent: 04 January 2021 20:41 >> >> Al Viro writes: >> >>> On Mon, Jan 04, 2021 at 12:16:56PM +, David Laight wrote: >>>> On x86 in_compat_syscall() is d

RE: in_compat_syscall() on x86

2021-01-04 Thread David Laight
From: Eric W. Biederman > Sent: 04 January 2021 20:41 > > Al Viro writes: > > > On Mon, Jan 04, 2021 at 12:16:56PM +, David Laight wrote: > >> On x86 in_compat_syscall() is defined as: > >> in_ia32_syscall() || in_x32_syscall() > >>

Re: in_compat_syscall() on x86

2021-01-04 Thread Eric W. Biederman
Al Viro writes: > On Mon, Jan 04, 2021 at 12:16:56PM +, David Laight wrote: >> On x86 in_compat_syscall() is defined as: >> in_ia32_syscall() || in_x32_syscall() >> >> Now in_ia32_syscall() is a simple check of the TS_COMPAT flag. >> However in_x32_sys

Re: in_compat_syscall() on x86

2021-01-04 Thread Al Viro
On Mon, Jan 04, 2021 at 12:16:56PM +, David Laight wrote: > On x86 in_compat_syscall() is defined as: > in_ia32_syscall() || in_x32_syscall() > > Now in_ia32_syscall() is a simple check of the TS_COMPAT flag. > However in_x32_syscall() is a horrid beast that has to ind

RE: in_compat_syscall() on x86

2021-01-04 Thread David Laight
Copy x...@kernel.org > -Original Message- > From: David Laight > Sent: 04 January 2021 12:17 > To: Al Viro ; Christoph Hellwig ; > linux-kernel@vger.kernel.org > Subject: in_compat_syscall() on x86 > > On x86 in_compat_syscall() is defined as: > in_ia32_

in_compat_syscall() on x86

2021-01-04 Thread David Laight
On x86 in_compat_syscall() is defined as: in_ia32_syscall() || in_x32_syscall() Now in_ia32_syscall() is a simple check of the TS_COMPAT flag. However in_x32_syscall() is a horrid beast that has to indirect through to the original %eax value (ie the syscall number) and check for a bit