summaryrefslogtreecommitdiff
path: root/arch/arm64/mm/fault.c
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2017-10-31 18:56:11 +0300
committerWill Deacon <will.deacon@arm.com>2017-11-02 16:52:48 +0300
commit80b6eb04b5d05a472a37ae33647b213dd04e59b6 (patch)
treefbd0352ec3a12892a02127e60579316cc325fad8 /arch/arm64/mm/fault.c
parentc80ed088a519da53f27b798a69748eaabc66aadf (diff)
downloadlinux-80b6eb04b5d05a472a37ae33647b213dd04e59b6.tar.xz
arm64: Don't walk page table for user faults in do_mem_abort
Commit 42dbf54e8890 ("arm64: consistently log ESR and page table") dumps page table entries for user faults hitting do_bad entries in the fault handler table. Whilst this shouldn't really happen in practice, it's not beyond the realms of possibility if e.g. running an old kernel on a new CPU. Generally, we want to avoid exposing physical addresses under the control of userspace (see commit bf396c09c24 ("arm64: mm: don't print out page table entries on EL0 faults")), so walk the page tables only on exceptions from EL1. Reported-by: Kristina Martsenko <kristina.martsenko@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/mm/fault.c')
-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 6ee22cd8a249..a2a1a6c83da1 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -698,7 +698,8 @@ asmlinkage void __exception do_mem_abort(unsigned long addr, unsigned int esr,
mem_abort_decode(esr);
- show_pte(addr);
+ if (!user_mode(regs))
+ show_pte(addr);
info.si_signo = inf->sig;
info.si_errno = 0;