[PATCH 00/19] x86, mpx updates for 4.2 (take 9)

Dave Hansen
2015-06-07T18:36:55Z

Changes from take 8 / v23:
* Respond to some of Ingo's comments about get_xsave_field_ptr():
1. add const in return type, and fix up the cascading need for
'const' in other parts of the MPX code and tracepoints.
2. add a local 'fpu' var
3. Update patch description

Changes from take 7 / v22:
* Add Thomas's reviewed-by
* merge with tip/x86/fpu changes
* Fix tiny spelling nit

Changes from take 6 / v21:
* Address a bunch of Thomas's review comments.

Changes from take 5 / v20:

* Fix get_xsave_addr() to consult xstate_bv in anticipation
of fixes to xsave code.
* Bug fix for when an VMA being unmapped has neighbors which
are bounds tables.
* Rewrite unmapping code. I didn't do this lightly. It was
not originally my own code, and I resisted changing it
because it worked. But, I started bug chasing and decided
it was unmaintainable. The rewrite ended up removing
about 20% of the unmapping code and made it much simpler.

Changes from take 4 / v19:

* Do not pass a task_struct around when we are
really just going to operate on current

Changes from take 3 / v18 (all minor):

* use DECLARE_EVENT_CLASS()/DEFINE_EVENT() for
the ranged tracepoints to save 10 lines of code.

Changes from take 2 / v17 (all minor):

* fix a couple of whitespace borkages caught by checkpatch,
and a spelling error or two.
* replace printk with pr_info() for boot disable
* change trace print format for address intervals
* fix up variable name in tsk_get_xsave_addr() comment
* remove tsk_get_xsave_field() GPL export
* fix up Qiaowei's From:

--

Hi x86 maintainers,

There are a few basic things going on here:
1. Make FPU/xsave code cleaner and less error-prone
2. Add trace points to make kernel and app debugging easier
3. Add a boot-time disable for mpx
4. Rewrite the unmapping code.
5. Support 32-bit binaries to run on 64-bit kernels

This set is also available against tip/x86/fpu (8c05f05edb) in git:

git://git.kernel.org/pub/scm/linux/kernel/git/daveh/x86-mpx.git mpx-v24

Dave Hansen (19):
x86, mpx, xsave: Fix up bad get_xsave_addr() assumptions
x86, fpu: Wrap get_xsave_addr() to make it safer
x86, mpx: Use new get_xsave_field_ptr()
x86, mpx: Cleanup: Do not pass task around when unnecessary
x86, mpx: remove redundant MPX_BNDCFG_ADDR_MASK
x86, mpx: Restrict mmap size check to bounds tables
x86, mpx: boot-time disable
x86, mpx: trace #BR exceptions
x86, mpx: trace entry to bounds exception paths
x86, mpx: Trace the attempts to find bounds tables
x86, mpx: trace allocation of new bounds tables
x86: make is_64bit_mm() widely available
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 32-bit binaries on 64-bit kernel
x86, mpx: rewrite unmap code
x86, mpx: do not count MPX VMAs as neighbors when unmapping
x86, mpx: allow mixed binaries again

Documentation/kernel-parameters.txt | 4 +
arch/x86/include/asm/fpu/xstate.h | 1 +
arch/x86/include/asm/mmu_context.h | 13 +
arch/x86/include/asm/mpx.h | 74 ++--
arch/x86/include/asm/processor.h | 12 +-
arch/x86/include/asm/trace/mpx.h | 132 +++++++
arch/x86/kernel/cpu/common.c | 16 +
arch/x86/kernel/fpu/xstate.c | 77 ++++-
arch/x86/kernel/traps.c | 20 +-
arch/x86/kernel/uprobes.c | 10 +-
arch/x86/mm/mpx.c | 514 +++++++++++++++++-----------
kernel/sys.c | 8 +-
12 files changed, 610 insertions(+), 271 deletions(-)