kernel_optimize_test/arch/arm
Thomas Garnier e33f8d3267 arm/syscalls: Optimize address limit check
Disable the generic address limit check in favor of an architecture
specific optimized implementation. The generic implementation using
pending work flags did not work well with ARM and alignment faults.

The address limit is checked on each syscall return path to user-mode
path as well as the irq user-mode return function. If the address limit
was changed, a function is called to report data corruption (stopping
the kernel or process based on configuration).

The address limit check has to be done before any pending work because
they can reset the address limit and the process is killed using a
SIGKILL signal. For example the lkdtm address limit check does not work
because the signal to kill the process will reset the user-mode address
limit.

Signed-off-by: Thomas Garnier <thgarnie@google.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Tested-by: Kees Cook <keescook@chromium.org>
Tested-by: Leonard Crestez <leonard.crestez@nxp.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Pratyush Anand <panand@redhat.com>
Cc: Dave Martin <Dave.Martin@arm.com>
Cc: Will Drewry <wad@chromium.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: David Howells <dhowells@redhat.com>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: linux-api@vger.kernel.org
Cc: Yonghong Song <yhs@fb.com>
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/1504798247-48833-4-git-send-email-keescook@chromium.org
2017-09-17 19:45:33 +02:00
..
boot ARM: arm64: Devicetree updates for v4.14 2017-09-10 20:54:48 -07:00
common
configs ARM/arm64: SoC platform updates for v4.14 2017-09-10 20:35:46 -07:00
crypto
firmware
include Revert "arm/syscalls: Check address limit on user-mode return" 2017-09-17 19:45:33 +02:00
kernel arm/syscalls: Optimize address limit check 2017-09-17 19:45:33 +02:00
kvm
lib ARM: implement memset32 & memset64 2017-09-08 18:26:48 -07:00
mach-actions
mach-alpine
mach-artpec
mach-asm9260
mach-aspeed
mach-at91 The diff is dominated by the Allwinner A10/A20 SoCs getting converted to 2017-09-13 11:04:14 -07:00
mach-axxia
mach-bcm
mach-berlin
mach-clps711x
mach-cns3xxx
mach-davinci This pull request contains the following core changes: 2017-09-01 15:34:30 +02:00
mach-digicolor
mach-dove
mach-ebsa110
mach-efm32
mach-ep93xx ARM/arm64: SoC platform updates for v4.14 2017-09-10 20:35:46 -07:00
mach-exynos Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2017-09-12 06:10:44 -07:00
mach-footbridge
mach-gemini
mach-highbank
mach-hisi ARM/arm64: SoC platform updates for v4.14 2017-09-10 20:35:46 -07:00
mach-imx dma-mapping updates for 4.14: 2017-09-12 13:30:06 -07:00
mach-integrator
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx This pull request contains the following core changes: 2017-09-01 15:34:30 +02:00
mach-keystone
mach-ks8695
mach-lpc18xx
mach-lpc32xx
mach-mediatek
mach-meson
mach-mmp This pull request contains the following core changes: 2017-09-01 15:34:30 +02:00
mach-moxart
mach-mv78xx0
mach-mvebu Merge branch 'next/cleanup' into next/soc 2017-09-05 20:29:46 -07:00
mach-mxs
mach-netx
mach-nomadik
mach-nspire
mach-omap1 MTD changes for 4.14: 2017-09-09 14:48:21 -07:00
mach-omap2 Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2017-09-12 06:10:44 -07:00
mach-orion5x
mach-oxnas
mach-picoxcell
mach-prima2
mach-pxa Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2017-09-12 06:10:44 -07:00
mach-qcom
mach-realview
mach-rockchip Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2017-09-12 06:10:44 -07:00
mach-rpc
mach-s3c24xx ARM/arm64: SoC platform updates for v4.14 2017-09-10 20:35:46 -07:00
mach-s3c64xx
mach-s5pv210
mach-sa1100
mach-shmobile Merge branch 'next/cleanup' into next/soc 2017-09-05 20:29:46 -07:00
mach-socfpga
mach-spear
mach-sti
mach-stm32
mach-sunxi
mach-tango
mach-tegra ARM: SoC driver updates for v4.14 2017-09-10 20:40:00 -07:00
mach-u300
mach-uniphier
mach-ux500 ARM: ux500: don't select CPUFREQ_DT 2017-08-25 01:34:45 +02:00
mach-versatile
mach-vexpress
mach-vt8500
mach-w90x900
mach-zx
mach-zynq
mm Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2017-09-12 06:10:44 -07:00
net arm: eBPF JIT compiler 2017-08-22 09:26:43 -07:00
nwfpe
oprofile
plat-iop
plat-omap
plat-orion
plat-pxa
plat-samsung
plat-versatile
probes
tools
vdso
vfp
xen
Kconfig Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2017-09-12 06:10:44 -07:00
Kconfig-nommu
Kconfig.debug
Makefile