@@ -96,8 +96,11 @@ struct dentry *ext2_get_parent(struct dentry *child)
9696static int ext2_create (struct inode * dir , struct dentry * dentry , umode_t mode , bool excl )
9797{
9898 struct inode * inode ;
99+ int err ;
99100
100- dquot_initialize (dir );
101+ err = dquot_initialize (dir );
102+ if (err )
103+ return err ;
101104
102105 inode = ext2_new_inode (dir , mode , & dentry -> d_name );
103106 if (IS_ERR (inode ))
@@ -143,7 +146,9 @@ static int ext2_mknod (struct inode * dir, struct dentry *dentry, umode_t mode,
143146 if (!new_valid_dev (rdev ))
144147 return - EINVAL ;
145148
146- dquot_initialize (dir );
149+ err = dquot_initialize (dir );
150+ if (err )
151+ return err ;
147152
148153 inode = ext2_new_inode (dir , mode , & dentry -> d_name );
149154 err = PTR_ERR (inode );
@@ -169,7 +174,9 @@ static int ext2_symlink (struct inode * dir, struct dentry * dentry,
169174 if (l > sb -> s_blocksize )
170175 goto out ;
171176
172- dquot_initialize (dir );
177+ err = dquot_initialize (dir );
178+ if (err )
179+ goto out ;
173180
174181 inode = ext2_new_inode (dir , S_IFLNK | S_IRWXUGO , & dentry -> d_name );
175182 err = PTR_ERR (inode );
@@ -212,7 +219,9 @@ static int ext2_link (struct dentry * old_dentry, struct inode * dir,
212219 struct inode * inode = d_inode (old_dentry );
213220 int err ;
214221
215- dquot_initialize (dir );
222+ err = dquot_initialize (dir );
223+ if (err )
224+ return err ;
216225
217226 inode -> i_ctime = CURRENT_TIME_SEC ;
218227 inode_inc_link_count (inode );
@@ -233,7 +242,9 @@ static int ext2_mkdir(struct inode * dir, struct dentry * dentry, umode_t mode)
233242 struct inode * inode ;
234243 int err ;
235244
236- dquot_initialize (dir );
245+ err = dquot_initialize (dir );
246+ if (err )
247+ return err ;
237248
238249 inode_inc_link_count (dir );
239250
@@ -279,13 +290,17 @@ static int ext2_unlink(struct inode * dir, struct dentry *dentry)
279290 struct inode * inode = d_inode (dentry );
280291 struct ext2_dir_entry_2 * de ;
281292 struct page * page ;
282- int err = - ENOENT ;
293+ int err ;
283294
284- dquot_initialize (dir );
295+ err = dquot_initialize (dir );
296+ if (err )
297+ goto out ;
285298
286299 de = ext2_find_entry (dir , & dentry -> d_name , & page );
287- if (!de )
300+ if (!de ) {
301+ err = - ENOENT ;
288302 goto out ;
303+ }
289304
290305 err = ext2_delete_entry (de , page );
291306 if (err )
@@ -323,14 +338,21 @@ static int ext2_rename (struct inode * old_dir, struct dentry * old_dentry,
323338 struct ext2_dir_entry_2 * dir_de = NULL ;
324339 struct page * old_page ;
325340 struct ext2_dir_entry_2 * old_de ;
326- int err = - ENOENT ;
341+ int err ;
342+
343+ err = dquot_initialize (old_dir );
344+ if (err )
345+ goto out ;
327346
328- dquot_initialize (old_dir );
329- dquot_initialize (new_dir );
347+ err = dquot_initialize (new_dir );
348+ if (err )
349+ goto out ;
330350
331351 old_de = ext2_find_entry (old_dir , & old_dentry -> d_name , & old_page );
332- if (!old_de )
352+ if (!old_de ) {
353+ err = - ENOENT ;
333354 goto out ;
355+ }
334356
335357 if (S_ISDIR (old_inode -> i_mode )) {
336358 err = - EIO ;
0 commit comments