aboutsummaryrefslogtreecommitdiffstats
path: root/fs/hugetlbfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/hugetlbfs')
-rw-r--r--fs/hugetlbfs/inode.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index a4e9a7ec3691..d5f019d48b09 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -448,19 +448,20 @@ static int hugetlbfs_setattr(struct dentry *dentry, struct iattr *attr)
448 448
449 error = inode_change_ok(inode, attr); 449 error = inode_change_ok(inode, attr);
450 if (error) 450 if (error)
451 goto out; 451 return error;
452 452
453 if (ia_valid & ATTR_SIZE) { 453 if (ia_valid & ATTR_SIZE) {
454 error = -EINVAL; 454 error = -EINVAL;
455 if (!(attr->ia_size & ~huge_page_mask(h))) 455 if (attr->ia_size & ~huge_page_mask(h))
456 error = hugetlb_vmtruncate(inode, attr->ia_size); 456 return -EINVAL;
457 error = hugetlb_vmtruncate(inode, attr->ia_size);
457 if (error) 458 if (error)
458 goto out; 459 return error;
459 attr->ia_valid &= ~ATTR_SIZE;
460 } 460 }
461 error = inode_setattr(inode, attr); 461
462out: 462 setattr_copy(inode, attr);
463 return error; 463 mark_inode_dirty(inode);
464 return 0;
464} 465}
465 466
466static struct inode *hugetlbfs_get_inode(struct super_block *sb, uid_t uid, 467static struct inode *hugetlbfs_get_inode(struct super_block *sb, uid_t uid,