x86: mm: consolidate VM_FAULT_RETRY handling
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 15 Dec 2014 23:07:33 +0000 (15:07 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 15 Dec 2014 23:07:33 +0000 (15:07 -0800)
commit26178ec11ef3c6c814bf16a0a2b9c2f7242e3c64
tree7c4e2506fb972eda829b3ff7f0eca3dbae8e25ae
parent7fb08eca45270d0ae86e1ad9d39c40b7a55d0190
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>
arch/x86/mm/fault.c