linux-stable/arch/arm/mm
Russell King 6060e8df51 ARM: I-cache: flush executable mappings in flush_cache_range()
Dirk Behme reported instability on ARM11 SMP (VIPT non-aliasing cache)
caused by the dynamic linker changing protection on text pages to write
GOT entries.  The problem is due to an interaction between the write
faulting code providing new anonymous pages which are incoherent with
the I-cache due to write buffering, and the I-cache not having been
invalidated.

a4db94d plugs the hole with the data cache coherency.  This patch
provides the other half of the fix by flushing the I-cache in
flush_cache_range() for VM_EXEC VMAs (which is what we have when the
region is being made executable again.)  This ensures that the I-cache
will be up to date with the newly COW'd pages.

Note: if users are writing instructions, then they still need to use
the ARM sys_cacheflush API to ensure that the caches are correctly
synchronized.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2009-12-04 14:58:51 +00:00
..
abort-ev4.S
abort-ev4t.S
abort-ev5t.S
abort-ev5tj.S
abort-ev6.S Add core support for ARMv6/v7 big-endian 2009-05-30 14:00:18 +01:00
abort-ev7.S [ARM] 5227/1: Add the ENDPROC declarations to the .S files 2008-09-01 12:06:34 +01:00
abort-lv4t.S [ARM] nommu: abort handler fixup for !CPU_CP15_MMU cores. 2006-09-28 20:15:46 +01:00
abort-macro.S
abort-nommu.S [ARM] 5227/1: Add the ENDPROC declarations to the .S files 2008-09-01 12:06:34 +01:00
alignment.c Thumb-2: Implement the unified arch/arm/mm support 2009-07-24 12:32:56 +01:00
cache-fa.S ARM: Add support for FA526 v2 2009-03-25 13:10:01 +02:00
cache-feroceon-l2.c [ARM] Kirkwood: small L2 code cleanup 2009-03-28 22:39:30 -04:00
cache-l2x0.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
cache-v3.S [ARM] Remove unnecessary mach/hardware.h includes in arch/arm/mm 2008-11-28 23:20:39 +00:00
cache-v4.S [ARM] Remove unnecessary mach/hardware.h includes in arch/arm/mm 2008-11-28 23:20:39 +00:00
cache-v4wb.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cache-v4wt.S [ARM] Remove unnecessary mach/hardware.h includes in arch/arm/mm 2008-11-28 23:20:39 +00:00
cache-v6.S ARM: 5746/1: Handle possible translation errors in ARMv6/v7 coherent_user_range 2009-10-07 13:12:59 +01:00
cache-v7.S ARM: 5746/1: Handle possible translation errors in ARMv6/v7 coherent_user_range 2009-10-07 13:12:59 +01:00
cache-xsc3l2.c [ARM] xsc3: add highmem support to L2 cache handling code 2009-03-15 21:01:21 -04:00
context.c ARM: Fix errata 411920 workarounds 2009-10-29 19:13:09 +00:00
copypage-fa.c ARM: Add support for FA526 v2 2009-03-25 13:10:01 +02:00
copypage-feroceon.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-v3.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-v4mc.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-v4wb.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-v4wt.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-v6.c ARM: 5794/1: Flush the D-cache during copy_user_highpage() 2009-12-04 14:58:50 +00:00
copypage-xsc3.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-xscale.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
discontig.c mm: move bootmem descriptors definition to a single place 2008-07-24 10:47:14 -07:00
dma-mapping.c ARM: Use GFP_DMA only for masks _less_ than 32-bit 2009-10-25 22:44:30 +00:00
extable.c [ARM] Convert asm/uaccess.h to linux/uaccess.h 2008-09-06 11:35:55 +01:00
fault-armv.c ARM: Reduce __flush_dcache_page() visibility 2009-12-04 14:58:50 +00:00
fault.c ARM: 5742/1: ARM: add debug check for invalid kernel page faults 2009-10-05 17:55:55 +01:00
fault.h [ARM] do_bad_area() always takes current and current->active_mm 2006-09-27 16:13:48 +01:00
flush.c ARM: I-cache: flush executable mappings in flush_cache_range() 2009-12-04 14:58:51 +00:00
highmem.c ARM: Add kmap_atomic type debugging 2009-10-11 16:29:48 +01:00
init.c ARM: Fix sparsemem with SPARSEMEM_EXTREME enabled 2009-10-29 17:06:17 +00:00
iomap.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
ioremap.c omap iommu: simple virtual address space management 2009-05-19 08:23:49 +03:00
Kconfig ARM: 5769/1: CPU_ARM920T: remove dead Maverick EP9312 URL 2009-10-21 13:09:37 +01:00
Makefile ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
mm.h ARM: Reduce __flush_dcache_page() visibility 2009-12-04 14:58:50 +00:00
mmap.c ARM: 5740/1: fix valid_phys_addr_range() range check 2009-10-02 22:32:34 +01:00
mmu.c ARM: ZERO_PAGE: Avoid flush_dcache_page() for zero page 2009-12-01 18:20:07 +00:00
nommu.c nommu: Include asm/setup.h in arch/arm/mm/nommu.c 2009-07-24 12:35:03 +01:00
pabort-legacy.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
pabort-v6.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
pabort-v7.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
pgd.c [ARM] remove memzero() 2008-11-27 12:37:59 +00:00
proc-arm6_7.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm7tdmi.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm9tdmi.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm720.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm740.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm920.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm922.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm925.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm926.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm940.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm946.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm1020.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm1020e.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm1022.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-arm1026.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-fa526.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-feroceon.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-macros.S Merge branch 'devel-stable' into devel 2009-09-12 12:02:26 +01:00
proc-mohawk.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-sa110.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-sa1100.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-syms.c [ARM] export __cpu_flush_dcache_page 2009-07-05 15:25:00 +01:00
proc-v6.S ARM: ensure initial page tables are setup for SMP systems 2009-11-02 16:59:59 +00:00
proc-v7.S ARMv7: Check whether the SMP/nAMP mode was already enabled 2009-11-04 12:19:22 +00:00
proc-xsc3.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
proc-xscale.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
tlb-fa.S ARM: Add support for FA526 v2 2009-03-25 13:10:01 +02:00
tlb-v3.S
tlb-v4.S
tlb-v4wb.S
tlb-v4wbi.S
tlb-v6.S arm: Use __INIT macro instead of .text.init. 2009-04-27 19:51:58 -07:00
tlb-v7.S Check whether the TLB operations need broadcasting on SMP systems 2009-05-30 14:00:14 +01:00