linux_dsm_epyc7002/arch/arm/lib
Russell King a3c0f84765 ARM: spectre-v1: mitigate user accesses
Spectre variant 1 attacks are about this sequence of pseudo-code:

	index = load(user-manipulated pointer);
	access(base + index * stride);

In order for the cache side-channel to work, the access() must me made
to memory which userspace can detect whether cache lines have been
loaded.  On 32-bit ARM, this must be either user accessible memory, or
a kernel mapping of that same user accessible memory.

The problem occurs when the load() speculatively loads privileged data,
and the subsequent access() is made to user accessible memory.

Any load() which makes use of a user-maniplated pointer is a potential
problem if the data it has loaded is used in a subsequent access.  This
also applies for the access() if the data loaded by that access is used
by a subsequent access.

Harden the get_user() accessors against Spectre attacks by forcing out
of bounds addresses to a NULL pointer.  This prevents get_user() being
used as the load() step above.  As a side effect, put_user() will also
be affected even though it isn't implicated.

Also harden copy_from_user() by redoing the bounds check within the
arm_copy_from_user() code, and NULLing the pointer if out of bounds.

Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
2018-08-02 17:41:38 +01:00
..
ashldi3.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
ashrdi3.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
backtrace.S ARM: fix backtrace 2016-11-15 15:25:39 +00:00
bitops.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
bswapsdi2.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
call_with_stack.S ARM: replace BSYM() with badr assembly macro 2015-05-08 17:33:50 +01:00
changebit.S ARM: 7171/1: unwind: add unwind directives to bitops assembly macros 2011-11-26 21:58:53 +00:00
clear_user.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
clearbit.S ARM: 7171/1: unwind: add unwind directives to bitops assembly macros 2011-11-26 21:58:53 +00:00
copy_from_user.S ARM: spectre-v1: mitigate user accesses 2018-08-02 17:41:38 +01:00
copy_page.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
copy_template.S ARM: 8225/1: Add unwinding support for memory copy functions 2014-11-27 16:00:25 +00:00
copy_to_user.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
csumipv6.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
csumpartial.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
csumpartialcopy.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
csumpartialcopygeneric.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
csumpartialcopyuser.S ARM: 8731/1: Fix csum_partial_copy_from_user() stack mismatch 2017-12-17 22:20:39 +00:00
delay-loop.S ARM: 8619/1: udelay: document the various constants 2016-10-19 10:52:36 +01:00
delay.c Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
div64.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
ecard.S ARM: remove unnecessary mach/hardware.h includes 2011-07-12 11:19:27 -05:00
findbit.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
floppydma.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
getuser.S ARM: 8658/1: uaccess: fix zeroing of 64-bit get_user() 2017-02-16 15:58:32 +00:00
io-acorn.S arch: remove direct definitions of KERN_<LEVEL> uses 2012-07-30 17:25:13 -07:00
io-readsb.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
io-readsl.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
io-readsw-armv3.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
io-readsw-armv4.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
io-writesb.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
io-writesl.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
io-writesw-armv3.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
io-writesw-armv4.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
lib1funcs.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
lshrdi3.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
Makefile ARM: 8745/1: get rid of __memzero() 2018-01-21 15:37:56 +00:00
memchr.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
memcpy.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
memmove.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
memset.S ARM: implement memset32 & memset64 2017-09-08 18:26:48 -07:00
muldi3.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
putuser.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
setbit.S ARM: 7171/1: unwind: add unwind directives to bitops assembly macros 2011-11-26 21:58:53 +00:00
strchr.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
strrchr.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
testchangebit.S ARM: 7171/1: unwind: add unwind directives to bitops assembly macros 2011-11-26 21:58:53 +00:00
testclearbit.S ARM: 7171/1: unwind: add unwind directives to bitops assembly macros 2011-11-26 21:58:53 +00:00
testsetbit.S ARM: 7171/1: unwind: add unwind directives to bitops assembly macros 2011-11-26 21:58:53 +00:00
uaccess_with_memcpy.c new helper: uaccess_kernel() 2017-03-28 16:43:25 -04:00
ucmpdi2.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
xor-neon.c ARM: 7835/2: fix modular build of xor_blocks() with NEON enabled 2013-09-09 15:24:47 +01:00