@@ -613,8 +613,7 @@ static int new_inode_init(struct inode *inode, struct inode *dir, umode_t mode)
613613 * we have to set uid and gid here
614614 */
615615 inode_init_owner (inode , dir , mode );
616- dquot_initialize (inode );
617- return 0 ;
616+ return dquot_initialize (inode );
618617}
619618
620619static int reiserfs_create (struct inode * dir , struct dentry * dentry , umode_t mode ,
@@ -633,12 +632,18 @@ static int reiserfs_create(struct inode *dir, struct dentry *dentry, umode_t mod
633632 struct reiserfs_transaction_handle th ;
634633 struct reiserfs_security_handle security ;
635634
636- dquot_initialize (dir );
635+ retval = dquot_initialize (dir );
636+ if (retval )
637+ return retval ;
637638
638639 if (!(inode = new_inode (dir -> i_sb ))) {
639640 return - ENOMEM ;
640641 }
641- new_inode_init (inode , dir , mode );
642+ retval = new_inode_init (inode , dir , mode );
643+ if (retval ) {
644+ drop_new_inode (inode );
645+ return retval ;
646+ }
642647
643648 jbegin_count += reiserfs_cache_default_acl (dir );
644649 retval = reiserfs_security_init (dir , inode , & dentry -> d_name , & security );
@@ -710,12 +715,18 @@ static int reiserfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode
710715 if (!new_valid_dev (rdev ))
711716 return - EINVAL ;
712717
713- dquot_initialize (dir );
718+ retval = dquot_initialize (dir );
719+ if (retval )
720+ return retval ;
714721
715722 if (!(inode = new_inode (dir -> i_sb ))) {
716723 return - ENOMEM ;
717724 }
718- new_inode_init (inode , dir , mode );
725+ retval = new_inode_init (inode , dir , mode );
726+ if (retval ) {
727+ drop_new_inode (inode );
728+ return retval ;
729+ }
719730
720731 jbegin_count += reiserfs_cache_default_acl (dir );
721732 retval = reiserfs_security_init (dir , inode , & dentry -> d_name , & security );
@@ -787,7 +798,9 @@ static int reiserfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode
787798 2 * (REISERFS_QUOTA_INIT_BLOCKS (dir -> i_sb ) +
788799 REISERFS_QUOTA_TRANS_BLOCKS (dir -> i_sb ));
789800
790- dquot_initialize (dir );
801+ retval = dquot_initialize (dir );
802+ if (retval )
803+ return retval ;
791804
792805#ifdef DISPLACE_NEW_PACKING_LOCALITIES
793806 /*
@@ -800,7 +813,11 @@ static int reiserfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode
800813 if (!(inode = new_inode (dir -> i_sb ))) {
801814 return - ENOMEM ;
802815 }
803- new_inode_init (inode , dir , mode );
816+ retval = new_inode_init (inode , dir , mode );
817+ if (retval ) {
818+ drop_new_inode (inode );
819+ return retval ;
820+ }
804821
805822 jbegin_count += reiserfs_cache_default_acl (dir );
806823 retval = reiserfs_security_init (dir , inode , & dentry -> d_name , & security );
@@ -899,7 +916,9 @@ static int reiserfs_rmdir(struct inode *dir, struct dentry *dentry)
899916 JOURNAL_PER_BALANCE_CNT * 2 + 2 +
900917 4 * REISERFS_QUOTA_TRANS_BLOCKS (dir -> i_sb );
901918
902- dquot_initialize (dir );
919+ retval = dquot_initialize (dir );
920+ if (retval )
921+ return retval ;
903922
904923 reiserfs_write_lock (dir -> i_sb );
905924 retval = journal_begin (& th , dir -> i_sb , jbegin_count );
@@ -985,7 +1004,9 @@ static int reiserfs_unlink(struct inode *dir, struct dentry *dentry)
9851004 int jbegin_count ;
9861005 unsigned long savelink ;
9871006
988- dquot_initialize (dir );
1007+ retval = dquot_initialize (dir );
1008+ if (retval )
1009+ return retval ;
9891010
9901011 inode = d_inode (dentry );
9911012
@@ -1095,12 +1116,18 @@ static int reiserfs_symlink(struct inode *parent_dir,
10951116 2 * (REISERFS_QUOTA_INIT_BLOCKS (parent_dir -> i_sb ) +
10961117 REISERFS_QUOTA_TRANS_BLOCKS (parent_dir -> i_sb ));
10971118
1098- dquot_initialize (parent_dir );
1119+ retval = dquot_initialize (parent_dir );
1120+ if (retval )
1121+ return retval ;
10991122
11001123 if (!(inode = new_inode (parent_dir -> i_sb ))) {
11011124 return - ENOMEM ;
11021125 }
1103- new_inode_init (inode , parent_dir , mode );
1126+ retval = new_inode_init (inode , parent_dir , mode );
1127+ if (retval ) {
1128+ drop_new_inode (inode );
1129+ return retval ;
1130+ }
11041131
11051132 retval = reiserfs_security_init (parent_dir , inode , & dentry -> d_name ,
11061133 & security );
@@ -1184,7 +1211,9 @@ static int reiserfs_link(struct dentry *old_dentry, struct inode *dir,
11841211 JOURNAL_PER_BALANCE_CNT * 3 +
11851212 2 * REISERFS_QUOTA_TRANS_BLOCKS (dir -> i_sb );
11861213
1187- dquot_initialize (dir );
1214+ retval = dquot_initialize (dir );
1215+ if (retval )
1216+ return retval ;
11881217
11891218 reiserfs_write_lock (dir -> i_sb );
11901219 if (inode -> i_nlink >= REISERFS_LINK_MAX ) {
@@ -1308,8 +1337,12 @@ static int reiserfs_rename(struct inode *old_dir, struct dentry *old_dentry,
13081337 JOURNAL_PER_BALANCE_CNT * 3 + 5 +
13091338 4 * REISERFS_QUOTA_TRANS_BLOCKS (old_dir -> i_sb );
13101339
1311- dquot_initialize (old_dir );
1312- dquot_initialize (new_dir );
1340+ retval = dquot_initialize (old_dir );
1341+ if (retval )
1342+ return retval ;
1343+ retval = dquot_initialize (new_dir );
1344+ if (retval )
1345+ return retval ;
13131346
13141347 old_inode = d_inode (old_dentry );
13151348 new_dentry_inode = d_inode (new_dentry );
0 commit comments