[PATCH v3 00/10] Reclaim TIF_IA32 and TIF_X32

From: Gabriel Krisman Bertazi
Date: Sat Oct 03 2020 - 23:26:08 EST


This is the third version of the patch to reclaim those TI flags. The
main difference from v2 is that it exports the elf32 headers in the
macros in a proper way, instead of doing some magic to use them.

Andy, I didn't follow (my understanding of) your suggestion to expose
the elf32 headers because by doing that in compat_start_thread would
mean also doing it in start_thread, but the later is not ELF specific.
The mechanism I used, which solves the issue and I hope is not
over-complex is the same that SET_PERSONALITY does, so there is
precedent. It also has the benefit that we don't need to touch other
architecture functions. Do you think in this patch series is fine?

This also drops the vmx patch, since that is being reworked by Sean and
Andy, and my patch doesn't change its behavior.

* original cover letter:

We are running out of TI flags for x86. This patchset removes several
usages of TIF_IA32 and TIF_x32 in preparation to reclaim these flags.
After these cleanups, there is still one more user for both of them,
which I need to take a better look before removing.

Many of the ideas for this patchset came from Andy Lutomirski (Thank
you!)

These were tested by exercising these paths with x32 and ia32 binaries.

Gabriel Krisman Bertazi (10):
x86: events: Avoid TIF_IA32 when checking 64bit mode
x86: Simplify compat syscall userspace allocation
x86: oprofile: Avoid TIF_IA32 when checking 64bit mode
x86: elf: Use e_machine to choose DLINFO in compat
elf: Expose ELF header in compat_start_thread
x86: elf: Use e_machine to select start_thread for x32
elf: Expose ELF header on arch_setup_additional_pages
x86: elf: Use e_machine to select additional_pages between x32
x86: Convert mmu context ia32_compat into a proper flags field
x86: Reclaim TIF_IA32 and TIF_X32

arch/x86/entry/vdso/vma.c | 4 ++--
arch/x86/entry/vsyscall/vsyscall_64.c | 2 +-
arch/x86/events/core.c | 2 +-
arch/x86/events/intel/ds.c | 2 +-
arch/x86/events/intel/lbr.c | 2 +-
arch/x86/include/asm/compat.h | 15 +++++++-------
arch/x86/include/asm/elf.h | 13 ++++++++-----
arch/x86/include/asm/mmu.h | 6 ++++--
arch/x86/include/asm/mmu_context.h | 2 +-
arch/x86/include/asm/thread_info.h | 4 ----
arch/x86/kernel/perf_regs.c | 2 +-
arch/x86/kernel/process_64.c | 28 +++++++++++++--------------
arch/x86/oprofile/backtrace.c | 2 +-
fs/binfmt_elf.c | 4 ++--
fs/compat_binfmt_elf.c | 20 ++++++++++++++-----
include/linux/elf.h | 10 ++++++++++
16 files changed, 68 insertions(+), 50 deletions(-)

--
2.28.0