This is 3.20 material. I'm hoping to get some comments early
in case folks have some issues with the way it's being done.
The MPX hardware structures differ in layout in 32 and 64-bit
mode. A 32-bit binary running on a 64-bit kernel needs the
32-bit structures, so we need code which switches between
the two modes.
The first patch is just a documentation update. The next 5
patches are really just prepwork. The meat is in the last 3.
x86: make is_64bit_mm() widely available
x86: make __VIRTUAL_MASK safe to use on 32 bit
x86, mpx: we do not allocate the bounds directory
x86, mpx: remove redundant MPX_BNDCFG_ADDR_MASK
x86, mpx: Add temporary variable to reduce masking
x86, mpx: new directory entry to addr helper
x86, mpx: do 32-bit-only cmpxchg for 32-bit apps
x86, mpx: support 32bit binaries on 64bit kernel
Documentation/x86/intel_mpx.txt | 12 +++-
arch/x86/include/asm/mmu_context.h | 13 +++++
arch/x86/include/asm/mpx.h | 2
arch/x86/include/asm/page_types.h | 8 +++
arch/x86/kernel/uprobes.c | 10 ---
arch/x86/mm/mpx.c | 93 ++++++++++++++++++++++++++++++-------
6 files changed, 107 insertions(+), 31 deletions(-)