-Index: linux-2.6.23/arch/mips/mm/init.c
-===================================================================
---- linux-2.6.23.orig/arch/mips/mm/init.c 2007-10-13 11:46:58.762489429 +0200
-+++ linux-2.6.23/arch/mips/mm/init.c 2007-10-13 11:47:36.092616749 +0200
-@@ -205,31 +205,6 @@
+--- a/arch/mips/mm/init.c
++++ b/arch/mips/mm/init.c
+@@ -205,32 +205,6 @@ void kunmap_coherent(void)
preempt_check_resched();
}
- void *vfrom, *vto;
-
- vto = kmap_atomic(to, KM_USER1);
-- if (cpu_has_dc_aliases && cpu_use_kmap_coherent && !Page_dcache_dirty(from)) {
+- if (cpu_has_dc_aliases && cpu_use_kmap_coherent &&
+- page_mapped(from) && !Page_dcache_dirty(from)) {
- vfrom = kmap_coherent(from, vaddr);
- copy_page(vto, vfrom);
- kunmap_coherent();
void copy_to_user_page(struct vm_area_struct *vma,
struct page *page, unsigned long vaddr, void *dst, const void *src,
unsigned long len)
-Index: linux-2.6.23/include/asm-mips/page.h
-===================================================================
---- linux-2.6.23.orig/include/asm-mips/page.h 2007-10-13 11:45:50.518600430 +0200
-+++ linux-2.6.23/include/asm-mips/page.h 2007-10-13 11:47:26.472068504 +0200
-@@ -35,6 +35,7 @@
+--- a/include/asm-mips/page.h
++++ b/include/asm-mips/page.h
+@@ -32,6 +32,7 @@
#ifndef __ASSEMBLY__
#include <linux/pfn.h>
#include <asm/io.h>
/*
-@@ -67,13 +68,16 @@
+@@ -64,13 +65,16 @@ static inline void clear_user_page(void
flush_data_cache_page((unsigned long)addr);
}