@@ -2436,7 +2436,9 @@ static int ext4_create(struct inode *dir, struct dentry *dentry, umode_t mode,
24362436 struct inode * inode ;
24372437 int err , credits , retries = 0 ;
24382438
2439- dquot_initialize (dir );
2439+ err = dquot_initialize (dir );
2440+ if (err )
2441+ return err ;
24402442
24412443 credits = (EXT4_DATA_TRANS_BLOCKS (dir -> i_sb ) +
24422444 EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3 );
@@ -2470,7 +2472,9 @@ static int ext4_mknod(struct inode *dir, struct dentry *dentry,
24702472 if (!new_valid_dev (rdev ))
24712473 return - EINVAL ;
24722474
2473- dquot_initialize (dir );
2475+ err = dquot_initialize (dir );
2476+ if (err )
2477+ return err ;
24742478
24752479 credits = (EXT4_DATA_TRANS_BLOCKS (dir -> i_sb ) +
24762480 EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3 );
@@ -2499,7 +2503,9 @@ static int ext4_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode)
24992503 struct inode * inode ;
25002504 int err , retries = 0 ;
25012505
2502- dquot_initialize (dir );
2506+ err = dquot_initialize (dir );
2507+ if (err )
2508+ return err ;
25032509
25042510retry :
25052511 inode = ext4_new_inode_start_handle (dir , mode ,
@@ -2612,7 +2618,9 @@ static int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
26122618 if (EXT4_DIR_LINK_MAX (dir ))
26132619 return - EMLINK ;
26142620
2615- dquot_initialize (dir );
2621+ err = dquot_initialize (dir );
2622+ if (err )
2623+ return err ;
26162624
26172625 credits = (EXT4_DATA_TRANS_BLOCKS (dir -> i_sb ) +
26182626 EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3 );
@@ -2910,8 +2918,12 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)
29102918
29112919 /* Initialize quotas before so that eventual writes go in
29122920 * separate transaction */
2913- dquot_initialize (dir );
2914- dquot_initialize (d_inode (dentry ));
2921+ retval = dquot_initialize (dir );
2922+ if (retval )
2923+ return retval ;
2924+ retval = dquot_initialize (d_inode (dentry ));
2925+ if (retval )
2926+ return retval ;
29152927
29162928 retval = - ENOENT ;
29172929 bh = ext4_find_entry (dir , & dentry -> d_name , & de , NULL );
@@ -2980,8 +2992,12 @@ static int ext4_unlink(struct inode *dir, struct dentry *dentry)
29802992 trace_ext4_unlink_enter (dir , dentry );
29812993 /* Initialize quotas before so that eventual writes go
29822994 * in separate transaction */
2983- dquot_initialize (dir );
2984- dquot_initialize (d_inode (dentry ));
2995+ retval = dquot_initialize (dir );
2996+ if (retval )
2997+ return retval ;
2998+ retval = dquot_initialize (d_inode (dentry ));
2999+ if (retval )
3000+ return retval ;
29853001
29863002 retval = - ENOENT ;
29873003 bh = ext4_find_entry (dir , & dentry -> d_name , & de , NULL );
@@ -3066,7 +3082,9 @@ static int ext4_symlink(struct inode *dir,
30663082 goto err_free_sd ;
30673083 }
30683084
3069- dquot_initialize (dir );
3085+ err = dquot_initialize (dir );
3086+ if (err )
3087+ return err ;
30703088
30713089 if ((disk_link .len > EXT4_N_BLOCKS * 4 )) {
30723090 /*
@@ -3197,7 +3215,9 @@ static int ext4_link(struct dentry *old_dentry,
31973215 if (ext4_encrypted_inode (dir ) &&
31983216 !ext4_is_child_context_consistent_with_parent (dir , inode ))
31993217 return - EPERM ;
3200- dquot_initialize (dir );
3218+ err = dquot_initialize (dir );
3219+ if (err )
3220+ return err ;
32013221
32023222retry :
32033223 handle = ext4_journal_start (dir , EXT4_HT_DIR ,
@@ -3476,13 +3496,20 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,
34763496 int credits ;
34773497 u8 old_file_type ;
34783498
3479- dquot_initialize (old .dir );
3480- dquot_initialize (new .dir );
3499+ retval = dquot_initialize (old .dir );
3500+ if (retval )
3501+ return retval ;
3502+ retval = dquot_initialize (new .dir );
3503+ if (retval )
3504+ return retval ;
34813505
34823506 /* Initialize quotas before so that eventual writes go
34833507 * in separate transaction */
3484- if (new .inode )
3485- dquot_initialize (new .inode );
3508+ if (new .inode ) {
3509+ retval = dquot_initialize (new .inode );
3510+ if (retval )
3511+ return retval ;
3512+ }
34863513
34873514 old .bh = ext4_find_entry (old .dir , & old .dentry -> d_name , & old .de , NULL );
34883515 if (IS_ERR (old .bh ))
@@ -3678,8 +3705,12 @@ static int ext4_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
36783705 new .inode )))
36793706 return - EPERM ;
36803707
3681- dquot_initialize (old .dir );
3682- dquot_initialize (new .dir );
3708+ retval = dquot_initialize (old .dir );
3709+ if (retval )
3710+ return retval ;
3711+ retval = dquot_initialize (new .dir );
3712+ if (retval )
3713+ return retval ;
36833714
36843715 old .bh = ext4_find_entry (old .dir , & old .dentry -> d_name ,
36853716 & old .de , & old .inlined );
0 commit comments