linux/arch
Johannes Weiner 3a13c4d761 x86: finish user fault error path with fatal signal
The x86 fault handler bails in the middle of error handling when the
task has a fatal signal pending.  For a subsequent patch this is a
problem in OOM situations because it relies on pagefault_out_of_memory()
being called even when the task has been killed, to perform proper
per-task OOM state unwinding.

Shortcutting the fault like this is a rather minor optimization that
saves a few instructions in rare cases.  Just remove it for
user-triggered faults.

Use the opportunity to split the fault retry handling from actual fault
errors and add locking documentation that reads suprisingly similar to
ARM's.

Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Reviewed-by: Michal Hocko <mhocko@suse.cz>
Acked-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: David Rientjes <rientjes@google.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: azurIt <azurit@pobox.sk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-09-12 15:38:01 -07:00
..
alpha arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
arc arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
arm arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
arm64 arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
avr32 arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
blackfin Merge branch 'cpuinit_phase2' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2013-07-18 10:50:26 -07:00
c6x of: consolidate definition of early_init_dt_alloc_memory_arch() 2013-08-28 21:18:32 +01:00
cris arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
frv arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
h8300 net: rename busy poll socket op and globals 2013-07-10 17:08:27 -07:00
hexagon arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
ia64 arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
m32r arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
m68k arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
metag arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
microblaze arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
mips arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
mn10300 arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
openrisc arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
parisc arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
powerpc arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
s390 arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
score arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
sh arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
sparc arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
tile arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
um arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
unicore32 arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
x86 x86: finish user fault error path with fatal signal 2013-09-12 15:38:01 -07:00
xtensa arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
.gitignore
Kconfig microblaze: fix clone syscall 2013-08-13 17:57:48 -07:00