Re: linux-next: x86: Unalbe to run x32 processes on the x86_64 kernel

From: Dmitry Safonov
Date: Tue Mar 21 2017 - 08:54:14 EST


On 03/21/2017 03:49 PM, Thomas Gleixner wrote:
On Tue, 21 Mar 2017, Adam Borowski wrote:
On Tue, Mar 21, 2017 at 07:45:39AM +0100, Ingo Molnar wrote:
* Andrei Vagin <avagin@xxxxxxxxx> wrote:

# first bad commit: [45fc8757d1d2128e342b4e7ef39adedf7752faac] x86:
Make the GDT remapping read-only on 64-bit

Just wondering, does the following commit fix it:

5b781c7e317f x86/tls: Forcibly set the accessed bit in TLS segments

It does fix i386 but not x32.

By "x32" I mean CONFIG_X86_X32, by "i386" CONFIG_IA32_EMULATION, contrary to
Andrei's first report. The naming of the new ABI wasn't too fortunate...

The X32 issue is unrelated to the GDT mapping.

What happens is that the mmap rework from Dmitry switched X32 to use 64bit
mappings, which is wrong. X32 has 64bit instructions and syscalls and 32bit
address space.

Hmm, in_compat_syscall() checks x32 syscall bit.
I'll take a look, what happens there.

Dmitry, can you please have a look and fix that up? For reproduction just
compile helloworld.c with gcc -mx32.

Sure, thanks.

--
Dmitry