27 #include <asm/pgtable.h>
28 #include <asm/traps.h>
29 #include <asm/uaccess.h>
31 #include <linux/signal.h>
32 #include <linux/module.h>
56 unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE |
57 (cause > 0 ? FAULT_FLAG_WRITE : 0);
104 if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(
current))
108 if (
likely(!(fault & VM_FAULT_ERROR))) {
109 if (flags & FAULT_FLAG_ALLOW_RETRY) {
110 if (fault & VM_FAULT_MAJOR)
114 if (fault & VM_FAULT_RETRY) {
115 flags &= ~FAULT_FLAG_ALLOW_RETRY;
116 flags |= FAULT_FLAG_TRIED;
131 if (fault & VM_FAULT_OOM) {
139 if (fault & VM_FAULT_SIGBUS) {
149 info.si_addr = (
void __user *)address;
160 info.si_addr = (
void *)address;
176 "virtual address 0x%08lx, regs %p\n", address, regs);
183 unsigned long badvadr =
pt_badva(regs);
190 unsigned long badvadr =
pt_badva(regs);
197 unsigned long badvadr =
pt_badva(regs);