summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2015-07-23 11:10:38 +0200
committerRalf Baechle <ralf@linux-mips.org>2015-08-03 09:25:08 +0200
commite070dab73523bcbf2409ba8b5c342d53bccc0959 (patch)
tree92154b37f1e4719e7ec030b8719121dea4412b81
parent106eccb4d20f35ebc58ff2286c170d9e79c5ff68 (diff)
downloadlinux-e070dab73523bcbf2409ba8b5c342d53bccc0959.tar.gz
linux-e070dab73523bcbf2409ba8b5c342d53bccc0959.tar.bz2
linux-e070dab73523bcbf2409ba8b5c342d53bccc0959.zip
MIPS: Handle page faults of executable but unreadable pages correctly.
Without this we end taking execeptions in an endless loop hanging the thread. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
-rw-r--r--arch/mips/mm/fault.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
index 36c0f26fac6b..852a41c6da45 100644
--- a/arch/mips/mm/fault.c
+++ b/arch/mips/mm/fault.c
@@ -133,7 +133,8 @@ good_area:
#endif
goto bad_area;
}
- if (!(vma->vm_flags & VM_READ)) {
+ if (!(vma->vm_flags & VM_READ) &&
+ exception_epc(regs) != address) {
#if 0
pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] RI violation\n",
raw_smp_processor_id(),