diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-16 00:07:33 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-16 00:07:33 +0100 |
commit | 26178ec11ef3c6c814bf16a0a2b9c2f7242e3c64 (patch) | |
tree | 7c4e2506fb972eda829b3ff7f0eca3dbae8e25ae /mm/fremap.c | |
parent | x86: mm: move mmap_sem unlock from mm_fault_error() to caller (diff) | |
download | linux-26178ec11ef3c6c814bf16a0a2b9c2f7242e3c64.tar.xz linux-26178ec11ef3c6c814bf16a0a2b9c2f7242e3c64.zip |
x86: mm: consolidate VM_FAULT_RETRY handling
The VM_FAULT_RETRY handling was confusing and incorrect for the case of
returning to kernel mode. We need to handle the exception table fixup
if we return to kernel mode due to a fatal signal - it will basically
look to the kernel user mode access like the access failed due to the VM
going away from udner it. Which is correct - the process is dying - and
avoids the whole "repeat endless kernel page faults" case.
Handling the VM_FAULT_RETRY early and in just one place also simplifies
the mmap_sem handling, since once we've taken care of VM_FAULT_RETRY we
know that we can just drop the lock. The remaining accounting and
possible error handling is thread-local and does not need the mmap_sem.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/fremap.c')
0 files changed, 0 insertions, 0 deletions