@@ -200,11 +200,12 @@ static struct dentry *ocfs2_lookup(struct inode *dir, struct dentry *dentry,
200200static struct inode * ocfs2_get_init_inode (struct inode * dir , umode_t mode )
201201{
202202 struct inode * inode ;
203+ int status ;
203204
204205 inode = new_inode (dir -> i_sb );
205206 if (!inode ) {
206207 mlog (ML_ERROR , "new_inode failed!\n" );
207- return NULL ;
208+ return ERR_PTR ( - ENOMEM ) ;
208209 }
209210
210211 /* populate as many fields early on as possible - many of
@@ -213,7 +214,10 @@ static struct inode *ocfs2_get_init_inode(struct inode *dir, umode_t mode)
213214 if (S_ISDIR (mode ))
214215 set_nlink (inode , 2 );
215216 inode_init_owner (inode , dir , mode );
216- dquot_initialize (inode );
217+ status = dquot_initialize (inode );
218+ if (status )
219+ return ERR_PTR (status );
220+
217221 return inode ;
218222}
219223
@@ -264,7 +268,11 @@ static int ocfs2_mknod(struct inode *dir,
264268 (unsigned long long )OCFS2_I (dir )-> ip_blkno ,
265269 (unsigned long )dev , mode );
266270
267- dquot_initialize (dir );
271+ status = dquot_initialize (dir );
272+ if (status ) {
273+ mlog_errno (status );
274+ return status ;
275+ }
268276
269277 /* get our super block */
270278 osb = OCFS2_SB (dir -> i_sb );
@@ -311,8 +319,9 @@ static int ocfs2_mknod(struct inode *dir,
311319 }
312320
313321 inode = ocfs2_get_init_inode (dir , mode );
314- if (!inode ) {
315- status = - ENOMEM ;
322+ if (IS_ERR (inode )) {
323+ status = PTR_ERR (inode );
324+ inode = NULL ;
316325 mlog_errno (status );
317326 goto leave ;
318327 }
@@ -708,7 +717,11 @@ static int ocfs2_link(struct dentry *old_dentry,
708717 if (S_ISDIR (inode -> i_mode ))
709718 return - EPERM ;
710719
711- dquot_initialize (dir );
720+ err = dquot_initialize (dir );
721+ if (err ) {
722+ mlog_errno (err );
723+ return err ;
724+ }
712725
713726 err = ocfs2_double_lock (osb , & old_dir_bh , old_dir ,
714727 & parent_fe_bh , dir , 0 );
@@ -896,7 +909,11 @@ static int ocfs2_unlink(struct inode *dir,
896909 (unsigned long long )OCFS2_I (dir )-> ip_blkno ,
897910 (unsigned long long )OCFS2_I (inode )-> ip_blkno );
898911
899- dquot_initialize (dir );
912+ status = dquot_initialize (dir );
913+ if (status ) {
914+ mlog_errno (status );
915+ return status ;
916+ }
900917
901918 BUG_ON (d_inode (dentry -> d_parent ) != dir );
902919
@@ -1230,8 +1247,16 @@ static int ocfs2_rename(struct inode *old_dir,
12301247 old_dentry -> d_name .len , old_dentry -> d_name .name ,
12311248 new_dentry -> d_name .len , new_dentry -> d_name .name );
12321249
1233- dquot_initialize (old_dir );
1234- dquot_initialize (new_dir );
1250+ status = dquot_initialize (old_dir );
1251+ if (status ) {
1252+ mlog_errno (status );
1253+ goto bail ;
1254+ }
1255+ status = dquot_initialize (new_dir );
1256+ if (status ) {
1257+ mlog_errno (status );
1258+ goto bail ;
1259+ }
12351260
12361261 osb = OCFS2_SB (old_dir -> i_sb );
12371262
@@ -1786,7 +1811,11 @@ static int ocfs2_symlink(struct inode *dir,
17861811 trace_ocfs2_symlink_begin (dir , dentry , symname ,
17871812 dentry -> d_name .len , dentry -> d_name .name );
17881813
1789- dquot_initialize (dir );
1814+ status = dquot_initialize (dir );
1815+ if (status ) {
1816+ mlog_errno (status );
1817+ goto bail ;
1818+ }
17901819
17911820 sb = dir -> i_sb ;
17921821 osb = OCFS2_SB (sb );
@@ -1831,8 +1860,9 @@ static int ocfs2_symlink(struct inode *dir,
18311860 }
18321861
18331862 inode = ocfs2_get_init_inode (dir , S_IFLNK | S_IRWXUGO );
1834- if (!inode ) {
1835- status = - ENOMEM ;
1863+ if (IS_ERR (inode )) {
1864+ status = PTR_ERR (inode );
1865+ inode = NULL ;
18361866 mlog_errno (status );
18371867 goto bail ;
18381868 }
@@ -2485,8 +2515,9 @@ int ocfs2_create_inode_in_orphan(struct inode *dir,
24852515 }
24862516
24872517 inode = ocfs2_get_init_inode (dir , mode );
2488- if (!inode ) {
2489- status = - ENOMEM ;
2518+ if (IS_ERR (inode )) {
2519+ status = PTR_ERR (inode );
2520+ inode = NULL ;
24902521 mlog_errno (status );
24912522 goto leave ;
24922523 }
0 commit comments