hfsplus: fix expand when not enough available space
[firefly-linux-kernel-4.4.55.git] / fs / hfsplus / inode.c
index 5f86cadb0542c074b7015483303d3bdfefe3347f..6229214ef7c1a0fc4deda39d5929292b51eef7af 100644 (file)
@@ -254,6 +254,12 @@ static int hfsplus_setattr(struct dentry *dentry, struct iattr *attr)
        if ((attr->ia_valid & ATTR_SIZE) &&
            attr->ia_size != i_size_read(inode)) {
                inode_dio_wait(inode);
+               if (attr->ia_size > inode->i_size) {
+                       error = generic_cont_expand_simple(inode,
+                                                          attr->ia_size);
+                       if (error)
+                               return error;
+               }
                truncate_setsize(inode, attr->ia_size);
                hfsplus_file_truncate(inode);
        }