浏览代码

Fix ptrace aliasing issue in copy_from_user_page / copy_to_user_page.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Ralf Baechle 20 年之前
父节点
当前提交
26852d5cdb
共有 1 个文件被更改,包括 7 次插入1 次删除
  1. 7 1
      include/asm-mips/cacheflush.h

+ 7 - 1
include/asm-mips/cacheflush.h

@@ -55,11 +55,17 @@ extern void (*flush_icache_range)(unsigned long start, unsigned long end);
 
 
 #define copy_to_user_page(vma, page, vaddr, dst, src, len)		\
 #define copy_to_user_page(vma, page, vaddr, dst, src, len)		\
 do {									\
 do {									\
+	if (cpu_has_dc_aliases)						\
+		flush_cache_page(vma, vaddr);				\
 	memcpy(dst, (void *) src, len);					\
 	memcpy(dst, (void *) src, len);					\
 	flush_icache_page(vma, page);					\
 	flush_icache_page(vma, page);					\
 } while (0)
 } while (0)
 #define copy_from_user_page(vma, page, vaddr, dst, src, len)		\
 #define copy_from_user_page(vma, page, vaddr, dst, src, len)		\
-	memcpy(dst, src, len)
+do {									\
+	if (cpu_has_dc_aliases)						\
+		flush_cache_page(vma, vaddr);				\
+	memcpy(dst, src, len);						\
+} while (0)
 
 
 extern void (*flush_cache_sigtramp)(unsigned long addr);
 extern void (*flush_cache_sigtramp)(unsigned long addr);
 extern void (*flush_icache_all)(void);
 extern void (*flush_icache_all)(void);