diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /arch/mips/mm/fault.c | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'arch/mips/mm/fault.c')
-rw-r--r-- | arch/mips/mm/fault.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index e97a7a2fb2c0..b78f7d913ca4 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c | |||
@@ -99,8 +99,31 @@ good_area: | |||
99 | if (!(vma->vm_flags & VM_WRITE)) | 99 | if (!(vma->vm_flags & VM_WRITE)) |
100 | goto bad_area; | 100 | goto bad_area; |
101 | } else { | 101 | } else { |
102 | if (!(vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC))) | 102 | if (kernel_uses_smartmips_rixi) { |
103 | goto bad_area; | 103 | if (address == regs->cp0_epc && !(vma->vm_flags & VM_EXEC)) { |
104 | #if 0 | ||
105 | pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] XI violation\n", | ||
106 | raw_smp_processor_id(), | ||
107 | current->comm, current->pid, | ||
108 | field, address, write, | ||
109 | field, regs->cp0_epc); | ||
110 | #endif | ||
111 | goto bad_area; | ||
112 | } | ||
113 | if (!(vma->vm_flags & VM_READ)) { | ||
114 | #if 0 | ||
115 | pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] RI violation\n", | ||
116 | raw_smp_processor_id(), | ||
117 | current->comm, current->pid, | ||
118 | field, address, write, | ||
119 | field, regs->cp0_epc); | ||
120 | #endif | ||
121 | goto bad_area; | ||
122 | } | ||
123 | } else { | ||
124 | if (!(vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC))) | ||
125 | goto bad_area; | ||
126 | } | ||
104 | } | 127 | } |
105 | 128 | ||
106 | /* | 129 | /* |