1. 07 12月, 2009 28 次提交
  2. 06 12月, 2009 9 次提交
  3. 05 12月, 2009 2 次提交
  4. 04 12月, 2009 1 次提交
    • R
      ARM: I-cache: flush executable mappings in flush_cache_range() · 6060e8df
      Russell King 提交于
      Dirk Behme reported instability on ARM11 SMP (VIPT non-aliasing cache)
      caused by the dynamic linker changing protection on text pages to write
      GOT entries.  The problem is due to an interaction between the write
      faulting code providing new anonymous pages which are incoherent with
      the I-cache due to write buffering, and the I-cache not having been
      invalidated.
      
      a4db94d plugs the hole with the data cache coherency.  This patch
      provides the other half of the fix by flushing the I-cache in
      flush_cache_range() for VM_EXEC VMAs (which is what we have when the
      region is being made executable again.)  This ensures that the I-cache
      will be up to date with the newly COW'd pages.
      
      Note: if users are writing instructions, then they still need to use
      the ARM sys_cacheflush API to ensure that the caches are correctly
      synchronized.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      6060e8df