26 #include <linux/errno.h>
28 #include <linux/kernel.h>
30 #include <linux/mman.h>
31 #include <linux/module.h>
32 #include <linux/signal.h>
33 #include <linux/sched.h>
34 #include <linux/string.h>
35 #include <linux/types.h>
36 #include <linux/ptrace.h>
49 const int field =
sizeof(
unsigned long) * 2;
67 if (
unlikely(address >= MODULE_START && address < MODULE_END))
76 goto bad_area_nosemaphore;
99 if (!(vma->
vm_flags & (VM_READ | VM_WRITE | VM_EXEC)))
110 if (
unlikely(fault & VM_FAULT_ERROR)) {
111 if (fault & VM_FAULT_OOM)
113 else if (fault & VM_FAULT_SIGBUS)
117 if (fault & VM_FAULT_MAJOR)
132 bad_area_nosemaphore:
140 info.si_addr = (
void __user *) address;
159 "virtual address %0*lx, epc == %0*lx, ra == %0*lx\n",
160 0, field, address, field, regs->
cp0_epc,
161 field, regs->
regs[3]);
170 if (is_global_init(tsk)) {
175 printk(
"VM: killing process %s\n", tsk->
comm);
194 info.si_addr = (
void __user *) address;