linux/arch/arm64/mm
Stephen Boyd b824b93068 arm64: print a fault message when attempting to write RO memory
If a page is marked read only we should print out that fact,
instead of printing out that there was a page fault. Right now we
get a cryptic error message that something went wrong with an
unhandled fault, but we don't evaluate the esr to figure out that
it was a read/write permission fault.

Instead of seeing:

  Unable to handle kernel paging request at virtual address ffff000008e460d8
  pgd = ffff800003504000
  [ffff000008e460d8] *pgd=0000000083473003, *pud=0000000083503003, *pmd=0000000000000000
  Internal error: Oops: 9600004f [#1] PREEMPT SMP

we'll see:

  Unable to handle kernel write to read-only memory at virtual address ffff000008e760d8
  pgd = ffff80003d3de000
  [ffff000008e760d8] *pgd=0000000083472003, *pud=0000000083435003, *pmd=0000000000000000
  Internal error: Oops: 9600004f [#1] PREEMPT SMP

We also add a userspace address check into is_permission_fault()
so that the function doesn't return true for ttbr0 PAN faults
when it shouldn't.

Reviewed-by: James Morse <james.morse@arm.com>
Tested-by: James Morse <james.morse@arm.com>
Acked-by: Laura Abbott <labbott@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2017-04-06 17:36:09 +01:00
..
Makefile arm64: Add support for CONFIG_DEBUG_VIRTUAL 2017-01-12 15:05:39 +00:00
cache.S arm64: don't pull uaccess.h into *.S 2016-12-26 13:05:17 -05:00
context.c arm64: cache: Remove support for ASID-tagged VIVT I-caches 2017-03-20 16:16:57 +00:00
copypage.c arm64: Defer dcache flush in __cpu_copy_user_page 2015-12-17 11:07:13 +00:00
dma-mapping.c arm64: Add support for DMA_ATTR_FORCE_CONTIGUOUS to IOMMU 2017-03-22 17:21:37 +00:00
dump.c arm64: dump: Add checking for writable and exectuable pages 2016-11-07 18:15:04 +00:00
extable.c arm64: migrate exception table users off module.h and onto extable.h 2016-09-20 09:36:21 +01:00
fault.c arm64: print a fault message when attempting to write RO memory 2017-04-06 17:36:09 +01:00
flush.c arm64: cache: Merge cachetype.h into cache.h 2017-03-20 16:16:59 +00:00
hugetlbpage.c arm64: hugetlb: fix the wrong return value for huge_ptep_set_access_flags 2017-01-11 10:26:40 +00:00
init.c arm64: kdump: provide /proc/vmcore file 2017-04-05 18:31:38 +01:00
ioremap.c arm64: use is_vmalloc_addr 2017-02-09 13:47:56 +00:00
kasan_init.c arm64: kasan: avoid bad virt_to_pfn() 2017-03-10 17:41:41 +00:00
mmap.c sched/headers: Prepare for new header dependencies before moving more code to <linux/sched/mm.h> 2017-03-02 08:42:30 +01:00
mmu.c arm64: kdump: protect crash dump kernel memory 2017-04-05 18:28:35 +01:00
numa.c ACPI/NUMA: Do not map pxm to node when NUMA is turned off 2016-12-15 11:32:32 +01:00
pageattr.c arm64: mm: add set_memory_valid() 2017-04-05 18:27:53 +01:00
pgd.c arm64: mm: drop fixup_init() and mm.h 2016-09-06 19:09:38 +01:00
physaddr.c arm64: Add support for CONFIG_DEBUG_VIRTUAL 2017-01-12 15:05:39 +00:00
proc.S arm64: Avoid clobbering mm in erratum workaround on QDF2400 2017-02-24 10:55:31 +00:00
ptdump_debugfs.c arm64: dump: Make ptdump debugfs a separate option 2016-11-07 18:15:04 +00:00