diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-10 12:34:43 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-10 12:34:43 -0500 |
| commit | 3eb5b893ebec7325ac9e6b8e4864af89a9ca1ed1 (patch) | |
| tree | c1ced8c2c3eb68f14001fcca35d5b0eed8277a52 /kernel | |
| parent | 9e66645d72d3c395da92b0f8855c787f4b5f0e89 (diff) | |
| parent | 9f7789f845cc100dd0d94fa1aa083e3373dc03db (diff) | |
Merge branch 'x86-mpx-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 MPX support from Thomas Gleixner:
"This enables support for x86 MPX.
MPX is a new debug feature for bound checking in user space. It
requires kernel support to handle the bound tables and decode the
bound violating instruction in the trap handler"
* 'x86-mpx-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
asm-generic: Remove asm-generic arch_bprm_mm_init()
mm: Make arch_unmap()/bprm_mm_init() available to all architectures
x86: Cleanly separate use of asm-generic/mm_hooks.h
x86 mpx: Change return type of get_reg_offset()
fs: Do not include mpx.h in exec.c
x86, mpx: Add documentation on Intel MPX
x86, mpx: Cleanup unused bound tables
x86, mpx: On-demand kernel allocation of bounds tables
x86, mpx: Decode MPX instruction to get bound violation information
x86, mpx: Add MPX-specific mmap interface
x86, mpx: Introduce VM_MPX to indicate that a VMA is MPX specific
x86, mpx: Add MPX to disabled features
ia64: Sync struct siginfo with general version
mips: Sync struct siginfo with general version
mpx: Extend siginfo structure to include bound violation information
x86, mpx: Rename cfg_reg_u and status_reg
x86: mpx: Give bndX registers actual names
x86: Remove arbitrary instruction size limit in instruction decoder
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/signal.c | 4 | ||||
| -rw-r--r-- | kernel/sys.c | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 19e35135fc60..16a305295256 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
| @@ -2756,6 +2756,10 @@ int copy_siginfo_to_user(siginfo_t __user *to, const siginfo_t *from) | |||
| 2756 | if (from->si_code == BUS_MCEERR_AR || from->si_code == BUS_MCEERR_AO) | 2756 | if (from->si_code == BUS_MCEERR_AR || from->si_code == BUS_MCEERR_AO) |
| 2757 | err |= __put_user(from->si_addr_lsb, &to->si_addr_lsb); | 2757 | err |= __put_user(from->si_addr_lsb, &to->si_addr_lsb); |
| 2758 | #endif | 2758 | #endif |
| 2759 | #ifdef SEGV_BNDERR | ||
| 2760 | err |= __put_user(from->si_lower, &to->si_lower); | ||
| 2761 | err |= __put_user(from->si_upper, &to->si_upper); | ||
| 2762 | #endif | ||
| 2759 | break; | 2763 | break; |
| 2760 | case __SI_CHLD: | 2764 | case __SI_CHLD: |
| 2761 | err |= __put_user(from->si_pid, &to->si_pid); | 2765 | err |= __put_user(from->si_pid, &to->si_pid); |
diff --git a/kernel/sys.c b/kernel/sys.c index 1eaa2f0b0246..a8c9f5a7dda6 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
| @@ -91,6 +91,12 @@ | |||
| 91 | #ifndef SET_TSC_CTL | 91 | #ifndef SET_TSC_CTL |
| 92 | # define SET_TSC_CTL(a) (-EINVAL) | 92 | # define SET_TSC_CTL(a) (-EINVAL) |
| 93 | #endif | 93 | #endif |
| 94 | #ifndef MPX_ENABLE_MANAGEMENT | ||
| 95 | # define MPX_ENABLE_MANAGEMENT(a) (-EINVAL) | ||
| 96 | #endif | ||
| 97 | #ifndef MPX_DISABLE_MANAGEMENT | ||
| 98 | # define MPX_DISABLE_MANAGEMENT(a) (-EINVAL) | ||
| 99 | #endif | ||
| 94 | 100 | ||
| 95 | /* | 101 | /* |
| 96 | * this is where the system-wide overflow UID and GID are defined, for | 102 | * this is where the system-wide overflow UID and GID are defined, for |
| @@ -2203,6 +2209,12 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, | |||
| 2203 | me->mm->def_flags &= ~VM_NOHUGEPAGE; | 2209 | me->mm->def_flags &= ~VM_NOHUGEPAGE; |
| 2204 | up_write(&me->mm->mmap_sem); | 2210 | up_write(&me->mm->mmap_sem); |
| 2205 | break; | 2211 | break; |
| 2212 | case PR_MPX_ENABLE_MANAGEMENT: | ||
| 2213 | error = MPX_ENABLE_MANAGEMENT(me); | ||
| 2214 | break; | ||
| 2215 | case PR_MPX_DISABLE_MANAGEMENT: | ||
| 2216 | error = MPX_DISABLE_MANAGEMENT(me); | ||
| 2217 | break; | ||
| 2206 | default: | 2218 | default: |
| 2207 | error = -EINVAL; | 2219 | error = -EINVAL; |
| 2208 | break; | 2220 | break; |
