diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2018-05-16 18:29:56 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2018-08-03 16:03:31 -0400 |
commit | 2e5afe54e0cd6fce79b51ca547caf08a990ad56d (patch) | |
tree | e1216c8896876b5f8e5e8a2dd990eacbb3236956 /fs/ext2/namei.c | |
parent | 5c1a68a358f94b9ac2e33183327bc04f207feed2 (diff) |
ext2: make sure that partially set up inodes won't be returned by ext2_iget()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/ext2/namei.c')
-rw-r--r-- | fs/ext2/namei.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c index 152453a91877..0c26dcc5d850 100644 --- a/fs/ext2/namei.c +++ b/fs/ext2/namei.c | |||
@@ -45,8 +45,7 @@ static inline int ext2_add_nondir(struct dentry *dentry, struct inode *inode) | |||
45 | return 0; | 45 | return 0; |
46 | } | 46 | } |
47 | inode_dec_link_count(inode); | 47 | inode_dec_link_count(inode); |
48 | unlock_new_inode(inode); | 48 | discard_new_inode(inode); |
49 | iput(inode); | ||
50 | return err; | 49 | return err; |
51 | } | 50 | } |
52 | 51 | ||
@@ -192,8 +191,7 @@ out: | |||
192 | 191 | ||
193 | out_fail: | 192 | out_fail: |
194 | inode_dec_link_count(inode); | 193 | inode_dec_link_count(inode); |
195 | unlock_new_inode(inode); | 194 | discard_new_inode(inode); |
196 | iput (inode); | ||
197 | goto out; | 195 | goto out; |
198 | } | 196 | } |
199 | 197 | ||
@@ -261,8 +259,7 @@ out: | |||
261 | out_fail: | 259 | out_fail: |
262 | inode_dec_link_count(inode); | 260 | inode_dec_link_count(inode); |
263 | inode_dec_link_count(inode); | 261 | inode_dec_link_count(inode); |
264 | unlock_new_inode(inode); | 262 | discard_new_inode(inode); |
265 | iput(inode); | ||
266 | out_dir: | 263 | out_dir: |
267 | inode_dec_link_count(dir); | 264 | inode_dec_link_count(dir); |
268 | goto out; | 265 | goto out; |