]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commit
ext4: fix data corruption for mmap writes
authorJan Kara <jack@suse.cz>
Fri, 26 May 2017 21:45:45 +0000 (17:45 -0400)
committerThadeu Lima de Souza Cascardo <cascardo@canonical.com>
Thu, 19 Oct 2017 12:05:28 +0000 (10:05 -0200)
commita71371e969d14c4fd3983709c72e8ba0130b34da
tree4db4e502fad0ed63f9e4a92a4b294998aea92f67
parent44a22a458f13eb8669433007beee35cc34a76522
ext4: fix data corruption for mmap writes

BugLink: http://bugs.launchpad.net/bugs/1724783
commit a056bdaae7a181f7dcc876cfab2f94538e508709 upstream.

mpage_submit_page() can race with another process growing i_size and
writing data via mmap to the written-back page. As mpage_submit_page()
samples i_size too early, it may happen that ext4_bio_write_page()
zeroes out too large tail of the page and thus corrupts user data.

Fix the problem by sampling i_size only after the page has been
write-protected in page tables by clear_page_dirty_for_io() call.

Reported-by: Michael Zimmer <michael@swarm64.com>
CC: stable@vger.kernel.org
Fixes: cb20d5188366f04d96d2e07b1240cc92170ade40
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
fs/ext4/inode.c