ARM: DMA: ensure that old section mappings are flushed from the TLB
authorRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 17 Jul 2014 11:17:45 +0000 (12:17 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 17 Jul 2014 18:26:08 +0000 (19:26 +0100)
commit6b076991dca9817e75c37e2f0db6d52611ea42fa
tree3dff1d567131ebba9695a1a57896dd3faff9a3e0
parentcda390bb8f0fc751194ef5f4c691ca8d3ff91009
ARM: DMA: ensure that old section mappings are flushed from the TLB

When setting up the CMA region, we must ensure that the old section
mappings are flushed from the TLB before replacing them with page
tables, otherwise we can suffer from mismatched aliases if the CPU
speculatively prefetches from these mappings at an inopportune time.

A mismatched alias can occur when the TLB contains a section mapping,
but a subsequent prefetch causes it to load a page table mapping,
resulting in the possibility of the TLB containing two matching
mappings for the same virtual address region.

Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/dma-mapping.c