Skip to content

Commit 8fc37ec

Browse files
author
Al Viro
committed
don't expose I_NEW inodes via dentry->d_inode
d_instantiate(dentry, inode); unlock_new_inode(inode); is a bad idea; do it the other way round... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
1 parent 32a7991 commit 8fc37ec

File tree

7 files changed

+19
-19
lines changed

7 files changed

+19
-19
lines changed

fs/ecryptfs/inode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,8 @@ ecryptfs_create(struct inode *directory_inode, struct dentry *ecryptfs_dentry,
269269
iput(ecryptfs_inode);
270270
goto out;
271271
}
272-
d_instantiate(ecryptfs_dentry, ecryptfs_inode);
273272
unlock_new_inode(ecryptfs_inode);
273+
d_instantiate(ecryptfs_dentry, ecryptfs_inode);
274274
out:
275275
return rc;
276276
}

fs/ext2/namei.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ static inline int ext2_add_nondir(struct dentry *dentry, struct inode *inode)
4141
{
4242
int err = ext2_add_link(dentry, inode);
4343
if (!err) {
44-
d_instantiate(dentry, inode);
4544
unlock_new_inode(inode);
45+
d_instantiate(dentry, inode);
4646
return 0;
4747
}
4848
inode_dec_link_count(inode);
@@ -242,8 +242,8 @@ static int ext2_mkdir(struct inode * dir, struct dentry * dentry, umode_t mode)
242242
if (err)
243243
goto out_fail;
244244

245-
d_instantiate(dentry, inode);
246245
unlock_new_inode(inode);
246+
d_instantiate(dentry, inode);
247247
out:
248248
return err;
249249

fs/ext3/namei.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1671,8 +1671,8 @@ static int ext3_add_nondir(handle_t *handle,
16711671
int err = ext3_add_entry(handle, dentry, inode);
16721672
if (!err) {
16731673
ext3_mark_inode_dirty(handle, inode);
1674-
d_instantiate(dentry, inode);
16751674
unlock_new_inode(inode);
1675+
d_instantiate(dentry, inode);
16761676
return 0;
16771677
}
16781678
drop_nlink(inode);
@@ -1836,8 +1836,8 @@ static int ext3_mkdir(struct inode * dir, struct dentry * dentry, umode_t mode)
18361836
if (err)
18371837
goto out_clear_inode;
18381838

1839-
d_instantiate(dentry, inode);
18401839
unlock_new_inode(inode);
1840+
d_instantiate(dentry, inode);
18411841
out_stop:
18421842
brelse(dir_block);
18431843
ext3_journal_stop(handle);

fs/ext4/namei.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2072,8 +2072,8 @@ static int ext4_add_nondir(handle_t *handle,
20722072
int err = ext4_add_entry(handle, dentry, inode);
20732073
if (!err) {
20742074
ext4_mark_inode_dirty(handle, inode);
2075-
d_instantiate(dentry, inode);
20762075
unlock_new_inode(inode);
2076+
d_instantiate(dentry, inode);
20772077
return 0;
20782078
}
20792079
drop_nlink(inode);
@@ -2249,8 +2249,8 @@ static int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
22492249
err = ext4_mark_inode_dirty(handle, dir);
22502250
if (err)
22512251
goto out_clear_inode;
2252-
d_instantiate(dentry, inode);
22532252
unlock_new_inode(inode);
2253+
d_instantiate(dentry, inode);
22542254
out_stop:
22552255
brelse(dir_block);
22562256
ext4_journal_stop(handle);

fs/jffs2/dir.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,8 @@ static int jffs2_create(struct inode *dir_i, struct dentry *dentry,
226226
__func__, inode->i_ino, inode->i_mode, inode->i_nlink,
227227
f->inocache->pino_nlink, inode->i_mapping->nrpages);
228228

229-
d_instantiate(dentry, inode);
230229
unlock_new_inode(inode);
230+
d_instantiate(dentry, inode);
231231
return 0;
232232

233233
fail:
@@ -446,8 +446,8 @@ static int jffs2_symlink (struct inode *dir_i, struct dentry *dentry, const char
446446
mutex_unlock(&dir_f->sem);
447447
jffs2_complete_reservation(c);
448448

449-
d_instantiate(dentry, inode);
450449
unlock_new_inode(inode);
450+
d_instantiate(dentry, inode);
451451
return 0;
452452

453453
fail:
@@ -591,8 +591,8 @@ static int jffs2_mkdir (struct inode *dir_i, struct dentry *dentry, umode_t mode
591591
mutex_unlock(&dir_f->sem);
592592
jffs2_complete_reservation(c);
593593

594-
d_instantiate(dentry, inode);
595594
unlock_new_inode(inode);
595+
d_instantiate(dentry, inode);
596596
return 0;
597597

598598
fail:
@@ -766,8 +766,8 @@ static int jffs2_mknod (struct inode *dir_i, struct dentry *dentry, umode_t mode
766766
mutex_unlock(&dir_f->sem);
767767
jffs2_complete_reservation(c);
768768

769-
d_instantiate(dentry, inode);
770769
unlock_new_inode(inode);
770+
d_instantiate(dentry, inode);
771771
return 0;
772772

773773
fail:

fs/jfs/namei.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,8 @@ static int jfs_create(struct inode *dip, struct dentry *dentry, umode_t mode,
176176
unlock_new_inode(ip);
177177
iput(ip);
178178
} else {
179-
d_instantiate(dentry, ip);
180179
unlock_new_inode(ip);
180+
d_instantiate(dentry, ip);
181181
}
182182

183183
out2:
@@ -309,8 +309,8 @@ static int jfs_mkdir(struct inode *dip, struct dentry *dentry, umode_t mode)
309309
unlock_new_inode(ip);
310310
iput(ip);
311311
} else {
312-
d_instantiate(dentry, ip);
313312
unlock_new_inode(ip);
313+
d_instantiate(dentry, ip);
314314
}
315315

316316
out2:
@@ -1043,8 +1043,8 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
10431043
unlock_new_inode(ip);
10441044
iput(ip);
10451045
} else {
1046-
d_instantiate(dentry, ip);
10471046
unlock_new_inode(ip);
1047+
d_instantiate(dentry, ip);
10481048
}
10491049

10501050
out2:
@@ -1424,8 +1424,8 @@ static int jfs_mknod(struct inode *dir, struct dentry *dentry,
14241424
unlock_new_inode(ip);
14251425
iput(ip);
14261426
} else {
1427-
d_instantiate(dentry, ip);
14281427
unlock_new_inode(ip);
1428+
d_instantiate(dentry, ip);
14291429
}
14301430

14311431
out1:

fs/reiserfs/namei.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -634,8 +634,8 @@ static int reiserfs_create(struct inode *dir, struct dentry *dentry, umode_t mod
634634
reiserfs_update_inode_transaction(inode);
635635
reiserfs_update_inode_transaction(dir);
636636

637-
d_instantiate(dentry, inode);
638637
unlock_new_inode(inode);
638+
d_instantiate(dentry, inode);
639639
retval = journal_end(&th, dir->i_sb, jbegin_count);
640640

641641
out_failed:
@@ -712,8 +712,8 @@ static int reiserfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode
712712
goto out_failed;
713713
}
714714

715-
d_instantiate(dentry, inode);
716715
unlock_new_inode(inode);
716+
d_instantiate(dentry, inode);
717717
retval = journal_end(&th, dir->i_sb, jbegin_count);
718718

719719
out_failed:
@@ -800,8 +800,8 @@ static int reiserfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode
800800
// the above add_entry did not update dir's stat data
801801
reiserfs_update_sd(&th, dir);
802802

803-
d_instantiate(dentry, inode);
804803
unlock_new_inode(inode);
804+
d_instantiate(dentry, inode);
805805
retval = journal_end(&th, dir->i_sb, jbegin_count);
806806
out_failed:
807807
reiserfs_write_unlock_once(dir->i_sb, lock_depth);
@@ -1096,8 +1096,8 @@ static int reiserfs_symlink(struct inode *parent_dir,
10961096
goto out_failed;
10971097
}
10981098

1099-
d_instantiate(dentry, inode);
11001099
unlock_new_inode(inode);
1100+
d_instantiate(dentry, inode);
11011101
retval = journal_end(&th, parent_dir->i_sb, jbegin_count);
11021102
out_failed:
11031103
reiserfs_write_unlock(parent_dir->i_sb);

0 commit comments

Comments
 (0)