summaryrefslogtreecommitdiffstats
path: root/arch/riscv
diff options
context:
space:
mode:
authorPekka Enberg <penberg@kernel.org>2020-09-05 09:07:26 +0300
committerPalmer Dabbelt <palmerdabbelt@google.com>2020-09-15 18:46:11 -0700
commita960c1323749383e62b67f5d49cdfbdcccde0ef6 (patch)
treee5a22bc2e128c39fa297d6052b42494c7672c9c8 /arch/riscv
parent2baa6d9506f24d52f53317f60ccbcdbb2c4f4c40 (diff)
downloadlinux-stable-a960c1323749383e62b67f5d49cdfbdcccde0ef6.tar.gz
linux-stable-a960c1323749383e62b67f5d49cdfbdcccde0ef6.tar.bz2
linux-stable-a960c1323749383e62b67f5d49cdfbdcccde0ef6.zip
riscv/mm/fault: Set FAULT_FLAG_INSTRUCTION flag in do_page_fault()
If the page fault "cause" is EXC_INST_PAGE_FAULT, set the FAULT_FLAG_INSTRUCTION flag to let handle_mm_fault() and friends know about it. This has no functional changes because RISC-V uses the default arch_vma_access_permitted() implementation, which always returns true. However, dax_pmd_fault(), for example, has a tracepoint that uses FAULT_FLAG_INSTRUCTION, so we might as well set it. Signed-off-by: Pekka Enberg <penberg@kernel.org> Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
Diffstat (limited to 'arch/riscv')
-rw-r--r--arch/riscv/mm/fault.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c
index a173432ccf82..1359e21c0c62 100644
--- a/arch/riscv/mm/fault.c
+++ b/arch/riscv/mm/fault.c
@@ -234,7 +234,8 @@ asmlinkage void do_page_fault(struct pt_regs *regs)
if (cause == EXC_STORE_PAGE_FAULT)
flags |= FAULT_FLAG_WRITE;
-
+ else if (cause == EXC_INST_PAGE_FAULT)
+ flags |= FAULT_FLAG_INSTRUCTION;
retry:
mmap_read_lock(mm);
vma = find_vma(mm, addr);