linux/arch/arm64/mm
Mika Penttilä 57adec866c arm64: mm: avoid calling apply_to_page_range on empty range
Calling apply_to_page_range with an empty range results in a BUG_ON
from the core code. This can be triggered by trying to load the st_drv
module with CONFIG_DEBUG_SET_MODULE_RONX enabled:

  kernel BUG at mm/memory.c:1874!
  Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
  Modules linked in:
  CPU: 3 PID: 1764 Comm: insmod Not tainted 4.5.0-rc1+ #2
  Hardware name: ARM Juno development board (r0) (DT)
  task: ffffffc9763b8000 ti: ffffffc975af8000 task.ti: ffffffc975af8000
  PC is at apply_to_page_range+0x2cc/0x2d0
  LR is at change_memory_common+0x80/0x108

This patch fixes the issue by making change_memory_common (called by the
set_memory_* functions) a NOP when numpages == 0, therefore avoiding the
erroneous call to apply_to_page_range and bringing us into line with x86
and s390.

Cc: <stable@vger.kernel.org>
Reviewed-by: Laura Abbott <labbott@redhat.com>
Acked-by: David Rientjes <rientjes@google.com>
Signed-off-by: Mika Penttilä <mika.penttila@nextfour.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2016-01-26 15:56:44 +00:00
..
cache.S arm64: Use PoU cache instr for I/D coherency 2015-12-17 11:07:13 +00:00
context.c arm64: mm: keep reserved ASIDs in sync with mm after multiple rollovers 2015-11-26 15:27:10 +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 __init/__initdata section marker to some functions/variables 2015-12-02 12:17:11 +00:00
dump.c arm64: Fix an enum typo in mm/dump.c 2016-01-25 11:53:03 +00:00
extable.c arm64: MMU fault handling and page table management 2012-09-17 13:41:57 +01:00
fault.c arm64: mm: fix fault_info table xFSC decoding 2015-11-25 15:49:16 +00:00
flush.c arm64, thp: remove infrastructure for handling splitting PMDs 2016-01-15 17:56:32 -08:00
hugetlbpage.c arm64: hugetlb: add support for PTE contiguous bit 2015-12-21 17:26:00 +00:00
init.c Merge branch 'aarch64/efi' into aarch64/for-next/core 2015-12-15 10:59:03 +00:00
ioremap.c arm64: add ioremap physical address information 2015-01-23 15:29:06 +00:00
kasan_init.c arm64: kasan: ensure that the KASAN zero page is mapped read-only 2016-01-25 11:09:05 +00:00
Makefile arm64: add KASAN support 2015-10-12 17:46:36 +01:00
mm.h arm64: add better page protections to arm64 2015-01-22 14:54:29 +00:00
mmap.c arm64: mm: support ARCH_MMAP_RND_BITS 2016-01-14 16:00:49 -08:00
mmu.c Merge branch 'aarch64/efi' into aarch64/for-next/core 2015-12-15 10:59:03 +00:00
pageattr.c arm64: mm: avoid calling apply_to_page_range on empty range 2016-01-26 15:56:44 +00:00
pgd.c arm64: mm: move pgd_cache initialisation to pgtable_cache_init 2016-01-05 15:43:10 +00:00
proc-macros.S arm64: kernel: fix architected PMU registers unconditional access 2016-01-25 11:09:06 +00:00
proc.S arm64: kernel: fix architected PMU registers unconditional access 2016-01-25 11:09:06 +00:00