[3.13.y.z extended stable] Patch "ext4: fix mmap data corruption when blocksize < pagesize" has been added to staging queue

Kamal Mostafa kamal at canonical.com
Fri Oct 31 20:53:34 UTC 2014

This is a note to let you know that I have just added a patch titled

    ext4: fix mmap data corruption when blocksize < pagesize

to the linux-3.13.y-queue branch of the 3.13.y.z extended stable tree 
which can be found at:


This patch is scheduled to be released in version

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.13.y.z tree, see



>From bb47b715bafad0dc7b879fab399f32a7d24f2600 Mon Sep 17 00:00:00 2001
From: Jan Kara <jack at suse.cz>
Date: Wed, 1 Oct 2014 21:49:46 -0400
Subject: ext4: fix mmap data corruption when blocksize < pagesize

commit d6320cbfc92910a3e5f10c42d98c231c98db4f60 upstream.

Use truncate_isize_extended() when hole is being created in a file so that
->page_mkwrite() will get called for the partial tail page if it is
mmaped (see the first patch in the series for details).

Signed-off-by: Jan Kara <jack at suse.cz>
Signed-off-by: Theodore Ts'o <tytso at mit.edu>
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
 fs/ext4/inode.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 2d782aa..fd6501e3 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -4656,8 +4656,12 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
 				ext4_orphan_del(NULL, inode);
 				goto err_out;
-		} else
+		} else {
+			loff_t oldsize = inode->i_size;
 			i_size_write(inode, attr->ia_size);
+			pagecache_isize_extended(inode, oldsize, inode->i_size);
+		}

 		 * Blocks are going to be removed from the inode. Wait

More information about the kernel-team mailing list