From d55b6dcd76b624c6a33dc39da2cd17ab47e2f3f8 Mon Sep 17 00:00:00 2001 From: Matt Sealey Date: Thu, 28 Oct 2010 01:42:05 -0500 Subject: [PATCH] ARM 5794/1 Flush the D-cache during copy_user_highpage() --- arch/arm/mm/copypage-v6.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm/mm/copypage-v6.c b/arch/arm/mm/copypage-v6.c index 4127a7bddfe..1d3f5867fff 100644 --- a/arch/arm/mm/copypage-v6.c +++ b/arch/arm/mm/copypage-v6.c @@ -41,6 +41,16 @@ static void v6_copy_user_highpage_nonaliasing(struct page *to, kfrom = kmap_atomic(from, KM_USER0); kto = kmap_atomic(to, KM_USER1); copy_page(kto, kfrom); +#ifdef CONFIG_HIGHMEM + /* + * kmap_atomic() doesn't set the page virtual address, and + * kunmap_atomic() takes care of cache flushing already. + */ + if (page_address(to) != NULL) +#endif + __cpuc_flush_dcache_page(kto); + + kunmap_atomic(kto, KM_USER1); kunmap_atomic(kfrom, KM_USER0); }