Skip to content

x86, mpx updates for 4.2 (take 8)

Dave Hansen lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest19 patches 15 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/19x86, mpx, xsave: Fix up bad get_xsave_addr() assumptionsarch/x86/kernel/fpu/xstate.c+37 -80 replies
2/19x86, fpu: Wrap get_xsave_addr() to make it saferarch/x86/include/asm/fpu/xstate.h arch/x86/kernel/fpu/xstate.c+34 -015 replies
3/19x86, mpx: Use new get_xsave_field_ptr()arch/x86/include/asm/mpx.h arch/x86/kernel/traps.c arch/x86/mm/mpx.c+23 -240 replies
4/19x86, mpx: Cleanup: Do not pass task around when unnecessaryarch/x86/include/asm/mpx.h arch/x86/include/asm/processor.h arch/x86/kernel/traps.c +2 more+25 -290 replies
5/19x86, mpx: remove redundant MPX_BNDCFG_ADDR_MASKarch/x86/include/asm/mpx.h+0 -10 replies
6/19x86, mpx: Restrict mmap size check to bounds tablesarch/x86/mm/mpx.c+2 -20 replies
7/19x86, mpx: boot-time disableDocumentation/kernel-parameters.txt arch/x86/kernel/cpu/common.c+20 -00 replies
8/19x86, mpx: trace #BR exceptionsarch/x86/include/asm/trace/mpx.h arch/x86/kernel/traps.c arch/x86/mm/mpx.c+54 -00 replies
9/19x86, mpx: trace entry to bounds exception pathsarch/x86/include/asm/trace/mpx.h arch/x86/mm/mpx.c+35 -00 replies
10/19x86, mpx: Trace the attempts to find bounds tablesarch/x86/include/asm/trace/mpx.h arch/x86/mm/mpx.c+34 -00 replies
11/19x86, mpx: trace allocation of new bounds tablesarch/x86/include/asm/trace/mpx.h arch/x86/mm/mpx.c+17 -00 replies
12/19x86: make is_64bit_mm() widely availablearch/x86/include/asm/mmu_context.h arch/x86/kernel/uprobes.c+14 -90 replies
13/19x86, mpx: Add temporary variable to reduce maskingarch/x86/mm/mpx.c+4 -30 replies
14/19x86, mpx: new directory entry to addr helperarch/x86/include/asm/mpx.h arch/x86/mm/mpx.c+34 -80 replies
15/19x86, mpx: do 32-bit-only cmpxchg for 32-bit appsarch/x86/mm/mpx.c+36 -50 replies
16/19x86, mpx: support 32-bit binaries on 64-bit kernelarch/x86/include/asm/mpx.h arch/x86/mm/mpx.c+181 -550 replies
17/19x86, mpx: rewrite unmap codearch/x86/mm/mpx.c+168 -2430 replies
18/19x86, mpx: do not count MPX VMAs as neighbors when unmappingarch/x86/mm/mpx.c+19 -50 replies
19/19x86, mpx: allow mixed binaries againarch/x86/mm/mpx.c+0 -60 replies

Reviews trailers per patch

All 19 patches have a Reviewed-by or Acked-by.

PatchThomas GleixnerQiaowei Ren
1/19R-b
2/19R-b
3/19R-b
4/19R-b
5/19R-b
6/19R-b
7/19R-b
8/19R-b
9/19R-b
10/19R-b
11/19R-b
12/19R-b
13/19R-b
14/19R-b
15/19R-b
16/19R-b Based-on-patch-by
17/19R-b
18/19R-b
19/19R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCH 00/19] x86, mpx updates for 4.2 (take 8)

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 preempt safe and work properly
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-v23

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    | 131 ++++++++++
 arch/x86/kernel/cpu/common.c        |  16 ++
 arch/x86/kernel/fpu/xstate.c        |  78 +++++-
 arch/x86/kernel/traps.c             |  18 +-
 arch/x86/kernel/uprobes.c           |  10 +-
 arch/x86/mm/mpx.c                   | 508 ++++++++++++++++++++++--------------
 kernel/sys.c                        |   8 +-
 12 files changed, 606 insertions(+), 267 deletions(-)
 create mode 100644 arch/x86/include/asm/trace/mpx.h