Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

reiserfs: Handle error from dquot_initialize()

dquot_initialize() can now return error. Handle it where possible.

Signed-off-by: Jan Kara <jack@suse.com>

Jan Kara 2e6c97ea 9c89fe0a

+53 -17
+5 -2
fs/reiserfs/inode.c
··· 3319 3319 /* must be turned off for recursive notify_change calls */ 3320 3320 ia_valid = attr->ia_valid &= ~(ATTR_KILL_SUID|ATTR_KILL_SGID); 3321 3321 3322 - if (is_quota_modification(inode, attr)) 3323 - dquot_initialize(inode); 3322 + if (is_quota_modification(inode, attr)) { 3323 + error = dquot_initialize(inode); 3324 + if (error) 3325 + return error; 3326 + } 3324 3327 reiserfs_write_lock(inode->i_sb); 3325 3328 if (attr->ia_valid & ATTR_SIZE) { 3326 3329 /*
+48 -15
fs/reiserfs/namei.c
··· 613 613 * we have to set uid and gid here 614 614 */ 615 615 inode_init_owner(inode, dir, mode); 616 - dquot_initialize(inode); 617 - return 0; 616 + return dquot_initialize(inode); 618 617 } 619 618 620 619 static int reiserfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, ··· 632 633 struct reiserfs_transaction_handle th; 633 634 struct reiserfs_security_handle security; 634 635 635 - dquot_initialize(dir); 636 + retval = dquot_initialize(dir); 637 + if (retval) 638 + return retval; 636 639 637 640 if (!(inode = new_inode(dir->i_sb))) { 638 641 return -ENOMEM; 639 642 } 640 - new_inode_init(inode, dir, mode); 643 + retval = new_inode_init(inode, dir, mode); 644 + if (retval) { 645 + drop_new_inode(inode); 646 + return retval; 647 + } 641 648 642 649 jbegin_count += reiserfs_cache_default_acl(dir); 643 650 retval = reiserfs_security_init(dir, inode, &dentry->d_name, &security); ··· 715 710 if (!new_valid_dev(rdev)) 716 711 return -EINVAL; 717 712 718 - dquot_initialize(dir); 713 + retval = dquot_initialize(dir); 714 + if (retval) 715 + return retval; 719 716 720 717 if (!(inode = new_inode(dir->i_sb))) { 721 718 return -ENOMEM; 722 719 } 723 - new_inode_init(inode, dir, mode); 720 + retval = new_inode_init(inode, dir, mode); 721 + if (retval) { 722 + drop_new_inode(inode); 723 + return retval; 724 + } 724 725 725 726 jbegin_count += reiserfs_cache_default_acl(dir); 726 727 retval = reiserfs_security_init(dir, inode, &dentry->d_name, &security); ··· 798 787 2 * (REISERFS_QUOTA_INIT_BLOCKS(dir->i_sb) + 799 788 REISERFS_QUOTA_TRANS_BLOCKS(dir->i_sb)); 800 789 801 - dquot_initialize(dir); 790 + retval = dquot_initialize(dir); 791 + if (retval) 792 + return retval; 802 793 803 794 #ifdef DISPLACE_NEW_PACKING_LOCALITIES 804 795 /* ··· 813 800 if (!(inode = new_inode(dir->i_sb))) { 814 801 return -ENOMEM; 815 802 } 816 - new_inode_init(inode, dir, mode); 803 + retval = new_inode_init(inode, dir, mode); 804 + if (retval) { 805 + drop_new_inode(inode); 806 + return retval; 807 + } 817 808 818 809 jbegin_count += reiserfs_cache_default_acl(dir); 819 810 retval = reiserfs_security_init(dir, inode, &dentry->d_name, &security); ··· 916 899 JOURNAL_PER_BALANCE_CNT * 2 + 2 + 917 900 4 * REISERFS_QUOTA_TRANS_BLOCKS(dir->i_sb); 918 901 919 - dquot_initialize(dir); 902 + retval = dquot_initialize(dir); 903 + if (retval) 904 + return retval; 920 905 921 906 reiserfs_write_lock(dir->i_sb); 922 907 retval = journal_begin(&th, dir->i_sb, jbegin_count); ··· 1004 985 int jbegin_count; 1005 986 unsigned long savelink; 1006 987 1007 - dquot_initialize(dir); 988 + retval = dquot_initialize(dir); 989 + if (retval) 990 + return retval; 1008 991 1009 992 inode = d_inode(dentry); 1010 993 ··· 1116 1095 2 * (REISERFS_QUOTA_INIT_BLOCKS(parent_dir->i_sb) + 1117 1096 REISERFS_QUOTA_TRANS_BLOCKS(parent_dir->i_sb)); 1118 1097 1119 - dquot_initialize(parent_dir); 1098 + retval = dquot_initialize(parent_dir); 1099 + if (retval) 1100 + return retval; 1120 1101 1121 1102 if (!(inode = new_inode(parent_dir->i_sb))) { 1122 1103 return -ENOMEM; 1123 1104 } 1124 - new_inode_init(inode, parent_dir, mode); 1105 + retval = new_inode_init(inode, parent_dir, mode); 1106 + if (retval) { 1107 + drop_new_inode(inode); 1108 + return retval; 1109 + } 1125 1110 1126 1111 retval = reiserfs_security_init(parent_dir, inode, &dentry->d_name, 1127 1112 &security); ··· 1211 1184 JOURNAL_PER_BALANCE_CNT * 3 + 1212 1185 2 * REISERFS_QUOTA_TRANS_BLOCKS(dir->i_sb); 1213 1186 1214 - dquot_initialize(dir); 1187 + retval = dquot_initialize(dir); 1188 + if (retval) 1189 + return retval; 1215 1190 1216 1191 reiserfs_write_lock(dir->i_sb); 1217 1192 if (inode->i_nlink >= REISERFS_LINK_MAX) { ··· 1337 1308 JOURNAL_PER_BALANCE_CNT * 3 + 5 + 1338 1309 4 * REISERFS_QUOTA_TRANS_BLOCKS(old_dir->i_sb); 1339 1310 1340 - dquot_initialize(old_dir); 1341 - dquot_initialize(new_dir); 1311 + retval = dquot_initialize(old_dir); 1312 + if (retval) 1313 + return retval; 1314 + retval = dquot_initialize(new_dir); 1315 + if (retval) 1316 + return retval; 1342 1317 1343 1318 old_inode = d_inode(old_dentry); 1344 1319 new_dentry_inode = d_inode(new_dentry);