linux/arch
Mark Rutland 746a272e44 ARM: 8692/1: mm: abort uaccess retries upon fatal signal
When there's a fatal signal pending, arm's do_page_fault()
implementation returns 0. The intent is that we'll return to the
faulting userspace instruction, delivering the signal on the way.

However, if we take a fatal signal during fixing up a uaccess, this
results in a return to the faulting kernel instruction, which will be
instantly retried, resulting in the same fault being taken forever. As
the task never reaches userspace, the signal is not delivered, and the
task is left unkillable. While the task is stuck in this state, it can
inhibit the forward progress of the system.

To avoid this, we must ensure that when a fatal signal is pending, we
apply any necessary fixup for a faulting kernel instruction. Thus we
will return to an error path, and it is up to that code to make forward
progress towards delivering the fatal signal.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
Cc: stable@vger.kernel.org
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
2017-08-29 13:09:14 +01:00
..
alpha osf_wait4(): fix infoleak 2017-05-21 13:10:07 -04:00
arc arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
arm ARM: 8692/1: mm: abort uaccess retries upon fatal signal 2017-08-29 13:09:14 +01:00
arm64 arm64/vdso: Fix nsec handling for CLOCK_MONOTONIC_RAW 2017-06-20 10:41:51 +02:00
blackfin arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
c6x arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
cris arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
frv arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
h8300 arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
hexagon arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
ia64 arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
m32r arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
m68k arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
metag devicetree: Move include prefixes from arch to separate directory 2017-05-18 23:55:48 -07:00
microblaze arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
mips MIPS: Avoid accidental raw backtrace 2017-06-30 04:42:15 +02:00
mn10300 arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
nios2 arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
openrisc arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
parisc arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
powerpc powerpc fixes for 4.12 #8 2017-06-30 10:55:34 -07:00
s390 arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
score arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
sh mm: larger stack guard gap, between vmas 2017-06-19 21:50:20 +08:00
sparc arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
tile arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
um arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
unicore32 Kbuild UAPI header export updates for v4.12 2017-05-10 20:45:36 -07:00
x86 Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-07-01 09:10:17 -07:00
xtensa arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
.gitignore
Kconfig Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-05-10 10:30:46 -07:00