summaryrefslogtreecommitdiff
path: root/arch/arm/mm
diff options
context:
space:
mode:
authorCatalin Marinas <catalin.marinas@arm.com>2009-09-23 11:57:53 +0100
committerCatalin Marinas <catalin.marinas@arm.com>2009-09-23 12:09:18 +0100
commit694c03715eeb39bc87467149dfea7cb75ba1c9ac (patch)
treefe49d31c59b4ec6f4c2ba88f7901cd5bb2cd2cbf /arch/arm/mm
parent840f654eec9cf6c54fe25d0a039b99b7d29ce4e4 (diff)
Flush the D-cache during copy_user_highpage()
The I and D caches for copy-on-write pages on processors with write-allocate caches become incoherent causing problems on application relying on CoW for text pages (dynamic linker relocating symbols in a text page). This patch flushes the D-cache for such pages (the I-cache is handled during update_mmu_cache() when the page is first mapped). Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm/mm')
-rw-r--r--arch/arm/mm/copypage-v6.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/mm/copypage-v6.c b/arch/arm/mm/copypage-v6.c
index 0e21c0767580..a2380ef4d6f0 100644
--- a/arch/arm/mm/copypage-v6.c
+++ b/arch/arm/mm/copypage-v6.c
@@ -36,6 +36,7 @@ static DEFINE_SPINLOCK(v6_lock);
static void v6_copy_user_page_nonaliasing(void *kto, const void *kfrom, unsigned long vaddr)
{
copy_page(kto, kfrom);
+ __cpuc_flush_dcache_page(kto);
}
/*