x86: finish user fault error path with fatal signal
authorJohannes Weiner <[email protected]>
Thu, 12 Sep 2013 22:13:40 +0000 (15:13 -0700)
committerLinus Torvalds <[email protected]>
Thu, 12 Sep 2013 22:38:01 +0000 (15:38 -0700)
commit3a13c4d761b4b979ba8767f42345fed3274991b0
tree9f6f0b09875b6b510720bea2c2a0ac1fd6878f67
parent759496ba6407c6994d6a5ce3a5e74937d7816208
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 <[email protected]>
Reviewed-by: Michal Hocko <[email protected]>
Acked-by: KOSAKI Motohiro <[email protected]>
Cc: David Rientjes <[email protected]>
Cc: KAMEZAWA Hiroyuki <[email protected]>
Cc: azurIt <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
arch/x86/mm/fault.c