summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-11-28 23:57:26 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-11-28 23:57:26 -0800
commit894ba12732f0bdfc4e4a8b339067c3466f927744 (patch)
tree9dfdc74d902d28fc7f87f01d2e541f509e3eafc1
parent2c6ca087dab363ec8309ecb9010ce1f9602a0ac2 (diff)
parent6b18be5a733fa378754f0e6383365465d5db1f86 (diff)
Merge "arm64: avoid segfault on el0 cache maintenance"
-rw-r--r--arch/arm64/mm/fault.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index 55b944a913cb..7326be306618 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -283,7 +283,8 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr,
if (esr & ESR_LNX_EXEC) {
vm_flags = VM_EXEC;
- } else if ((esr & ESR_ELx_WNR) && !(esr & ESR_ELx_CM)) {
+ } else if (((esr & ESR_ELx_WNR) && !(esr & ESR_ELx_CM)) ||
+ ((esr & ESR_ELx_CM) && !(mm_flags & FAULT_FLAG_USER))) {
vm_flags = VM_WRITE;
mm_flags |= FAULT_FLAG_WRITE;
}