diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2015-07-23 11:10:38 +0200 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2015-08-03 09:25:08 +0200 |
commit | e070dab73523bcbf2409ba8b5c342d53bccc0959 (patch) | |
tree | 92154b37f1e4719e7ec030b8719121dea4412b81 | |
parent | 106eccb4d20f35ebc58ff2286c170d9e79c5ff68 (diff) | |
download | linux-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.c | 3 |
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(), |