]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
vfs: add missing virtual cache flush after editing partial pages
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 14 Jan 2013 21:17:50 +0000 (13:17 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Jan 2013 16:46:25 +0000 (08:46 -0800)
commit508cb26b0db4d271f6a38b9391524dd9fe7461cb
tree1c3c6d12b18aa72ad7024aa46844be36e8845701
parent3191d984378e83fb0c8e4b18765c9aef9086155e
vfs: add missing virtual cache flush after editing partial pages

commit 6d283dba3721cc43be014b50a1acc2f35860a65a upstream.

Andrew Morton pointed this out a month ago, and then I completely forgot
about it.

If we read a partial last page of a block device, we will zero out the
end of the page, but since that page can then be mapped into user space,
we should also make sure to flush the cache on architectures that have
virtual caches.  We have the flush_dcache_page() function for this, so
use it.

Now, in practice this really never matters, because nobody sane uses
virtual caches to begin with, and they largely exist on old broken RISC
arhitectures.

And even if you did run on one of those obsolete CPU's, the whole "mmap
and access the last partial page of a block device" behavior probably
doesn't actually exist.  The normal IO functions (read/write) will never
see the zeroed-out part of the page that migth not be coherent in the
cache, because they honor the size of the device.

So I'm marking this for stable (3.7 only), but I'm not sure anybody will
ever care.

Pointed-out-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/buffer.c