]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'safe-dirty-tlb-flush'
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 27 Apr 2014 22:08:12 +0000 (15:08 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 27 Apr 2014 22:08:12 +0000 (15:08 -0700)
commit7e3fff14a830982637400170266bbcb24c9b1796
tree6eccadffcc04a7b66021ab3bd114cafcb52181c6
parenta87900bb709eab3e3d750635d1da3916ae6722fe
parent8899306e01bcc16c012ddeecb3dfb765858dc693
Merge branch 'safe-dirty-tlb-flush'

This merges the patch to fix possible loss of dirty bit on munmap() or
madvice(DONTNEED).  If there are concurrent writers on other CPU's that
have the unmapped/unneeded page in their TLBs, their writes to the page
could possibly get lost if a third CPU raced with the TLB flush and did
a page_mkclean() before the page was fully written.

Admittedly, if you unmap() or madvice(DONTNEED) an area _while_ another
thread is still busy writing to it, you deserve all the lost writes you
could get.  But we kernel people hold ourselves to higher quality
standards than "crazy people deserve to lose", because, well, we've seen
people do all kinds of crazy things.

So let's get it right, just because we can, and we don't have to worry
about it.

* safe-dirty-tlb-flush:
  mm: split 'tlb_flush_mmu()' into tlb flushing and memory freeing parts