We should not call vm_fault(), or send a signal, with interrupts disabled. MI kernel code is not prepared for such environment, not to mention that this increases the system latency, since code appears to be executing as being under spinlock.
The FAR register for data aborts is read before the interrupts are enabled, to avoid its corruption due to nested exception or context switch.