linux/include
George G. Davis a188ad2bc7 [ARM] 3762/1: Fix ptrace cache coherency bug for ARM1136 VIPT nonaliasing Harvard caches
Patch from George G. Davis

Resolve ARM1136 VIPT non-aliasing cache coherency issues observed when
using ptrace to set breakpoints and cleanup copy_{to,from}_user_page()
while we're here as requested by Russell King because "it's also far
too heavy on non-v6 CPUs".

NOTES:

1. Only access_process_vm() calls copy_{to,from}_user_page().
2. access_process_vm() calls get_user_pages() to pin down the "page".
3. get_user_pages() calls flush_dcache_page(page) which ensures cache
   coherency between kernel and userspace mappings of "page".  However
   flush_dcache_page(page) may not invalidate I-Cache over this range
   for all cases, specifically, I-Cache is not invalidated for the VIPT
   non-aliasing case.  So memory is consistent between kernel and user
   space mappings of "page" but I-Cache may still be hot over this
   range.  IOW, we don't have to worry about flush_cache_page() before
   memcpy().
4. Now, for the copy_to_user_page() case, after memcpy(), we must flush
   the caches so memory is consistent with kernel cache entries and
   invalidate the I-Cache if this mm region is executable.  We don't
   need to do anything after memcpy() for the copy_from_user_page()
   case since kernel cache entries will be invalidated via the same
   process above if we access "page" again.  The flush_ptrace_access()
   function (borrowed from SPARC64 implementation) is added to handle
   cache flushing after memcpy() for the copy_to_user_page() case.

Signed-off-by: George G. Davis <gdavis@mvista.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2006-09-02 18:43:20 +01:00
..
acpi Pull acpi_os_allocate into test branch 2006-07-10 02:39:47 -04:00
asm-alpha [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-arm [ARM] 3762/1: Fix ptrace cache coherency bug for ARM1136 VIPT nonaliasing Harvard caches 2006-09-02 18:43:20 +01:00
asm-arm26 [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-cris [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-frv [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-generic [PATCH] hdrinstall: remove asm/io.h from user visibility 2006-07-14 21:53:52 -07:00
asm-h8300 [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-i386 [PATCH] CONFIG_ACPI_SRAT NUMA build fix 2006-08-27 11:01:32 -07:00
asm-ia64 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2006-08-03 12:50:20 -07:00
asm-m32r [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-m68k [SPARC]: Kill prom_getname, unused and not implemented properly. 2006-07-21 14:17:55 -07:00
asm-m68knommu [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-mips [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-parisc [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-powerpc [POWERPC] hugepage BUG fix 2006-08-24 10:07:23 +10:00
asm-ppc [PATCH] ppc32: board-specific part of fs_enet update 2006-08-19 17:44:31 -04:00
asm-s390 [S390] get_clock inline assembly. 2006-07-17 16:09:42 +02:00
asm-sh [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-sh64 [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-sparc [SPARC]: Fix SA_STATIC_ALLOC value. 2006-07-24 22:34:00 -07:00
asm-sparc64 [SPARC64]: Fix pfn_pte() build failure. 2006-08-22 14:35:40 -07:00
asm-um Merge git://git.infradead.org/hdrinstall-2.6 2006-07-04 12:55:45 -07:00
asm-v850 [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
asm-x86_64 [PATCH] IA64: kprobe invalidate icache of jump buffer 2006-07-31 13:28:38 -07:00
asm-xtensa [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
keys [PATCH] keys: discard the contents of a key on revocation 2006-06-26 09:58:18 -07:00
linux Merge master.kernel.org:/home/rmk/linux-2.6-serial 2006-08-28 20:19:55 -07:00
math-emu
media V4L/DVB (4340): Videodev.h should be included also when V4L1_COMPAT is selected. 2006-08-08 13:54:12 -03:00
mtd Merge git://git.infradead.org/hdrinstall-2.6 2006-07-04 12:55:45 -07:00
net Fix sctp privilege elevation (CVE-2006-3745) 2006-08-22 12:52:23 -07:00
pcmcia
rdma IB/mad: Validate MADs for spec compliance 2006-07-24 09:18:07 -07:00
rxrpc
scsi [SCSI] iscsi bugfixes: reduce memory allocations 2006-07-28 11:49:34 -05:00
sound [ALSA] Fix section mismatch errors in ALSA PCI drivers 2006-07-12 20:08:01 +02:00
video [PATCH] mbxfb: Add framebuffer driver for the Intel 2700G 2006-07-14 21:53:55 -07:00
Kbuild