diff options
author | Johannes Weiner <hannes@cmpxchg.org> | 2013-09-12 15:13:40 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-12 15:38:01 -0700 |
commit | 3a13c4d761b4b979ba8767f42345fed3274991b0 (patch) | |
tree | 9f6f0b09875b6b510720bea2c2a0ac1fd6878f67 /mm/memory.c | |
parent | 759496ba6407c6994d6a5ce3a5e74937d7816208 (diff) | |
download | lwn-3a13c4d761b4b979ba8767f42345fed3274991b0.tar.gz lwn-3a13c4d761b4b979ba8767f42345fed3274991b0.zip |
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>
Diffstat (limited to 'mm/memory.c')
0 files changed, 0 insertions, 0 deletions