diff --git a/[refs] b/[refs] index bb20994e0989..cab1eef2d88f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8718d36cf99f5acf0f37487557ec25aee54b930b +refs/heads/master: af5a30d8cfcfc561336f982b06345d6b815e0bb3 diff --git a/trunk/fs/ext2/inode.c b/trunk/fs/ext2/inode.c index 19214435b752..3675088cb88c 100644 --- a/trunk/fs/ext2/inode.c +++ b/trunk/fs/ext2/inode.c @@ -1552,7 +1552,7 @@ int ext2_setattr(struct dentry *dentry, struct iattr *iattr) if (error) return error; } - if (iattr->ia_valid & ATTR_SIZE) { + if (iattr->ia_valid & ATTR_SIZE && iattr->ia_size != inode->i_size) { error = ext2_setsize(inode, iattr->ia_size); if (error) return error; diff --git a/trunk/mm/shmem.c b/trunk/mm/shmem.c index 7e5030ae18ff..f65f84062db5 100644 --- a/trunk/mm/shmem.c +++ b/trunk/mm/shmem.c @@ -764,10 +764,11 @@ static void shmem_truncate_range(struct inode *inode, loff_t start, loff_t end) static int shmem_notify_change(struct dentry *dentry, struct iattr *attr) { struct inode *inode = dentry->d_inode; + loff_t newsize = attr->ia_size; int error; - if (S_ISREG(inode->i_mode) && (attr->ia_valid & ATTR_SIZE)) { - loff_t newsize = attr->ia_size; + if (S_ISREG(inode->i_mode) && (attr->ia_valid & ATTR_SIZE) + && newsize != inode->i_size) { struct page *page = NULL; if (newsize < inode->i_size) {