3.15-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Filipe Manana <[email protected]>

commit a1a50f60a6bf4f861eb94793420274bc1ccd409a upstream.

In a previous change, commit 12870f1c9b2de7d475d22e73fd7db1b418599725,
I accidentally moved the roundup of inode->i_size to outside of the
critical section delimited by the inode mutex, which is not atomic and
not correct since the size can be changed by other task before we acquire
the mutex. Therefore fix it.

Signed-off-by: Filipe David Borba Manana <[email protected]>
Signed-off-by: Chris Mason <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 fs/btrfs/file.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -2200,13 +2200,14 @@ static int btrfs_punch_hole(struct inode
        bool same_page = ((offset >> PAGE_CACHE_SHIFT) ==
                          ((offset + len - 1) >> PAGE_CACHE_SHIFT));
        bool no_holes = btrfs_fs_incompat(root->fs_info, NO_HOLES);
-       u64 ino_size = round_up(inode->i_size, PAGE_CACHE_SIZE);
+       u64 ino_size;
 
        ret = btrfs_wait_ordered_range(inode, offset, len);
        if (ret)
                return ret;
 
        mutex_lock(&inode->i_mutex);
+       ino_size = round_up(inode->i_size, PAGE_CACHE_SIZE);
        /*
         * We needn't truncate any page which is beyond the end of the file
         * because we are sure there is no data there.


--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to