Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

Al Viro 2e5afe54 5c1a68a3

+4 -8
+1 -2
fs/ext2/ialloc.c
··· 611 611 dquot_drop(inode); 612 612 inode->i_flags |= S_NOQUOTA; 613 613 clear_nlink(inode); 614 - unlock_new_inode(inode); 615 - iput(inode); 614 + discard_new_inode(inode); 616 615 return ERR_PTR(err); 617 616 618 617 fail:
+3 -6
fs/ext2/namei.c
··· 45 45 return 0; 46 46 } 47 47 inode_dec_link_count(inode); 48 - unlock_new_inode(inode); 49 - iput(inode); 48 + discard_new_inode(inode); 50 49 return err; 51 50 } 52 51 ··· 191 192 192 193 out_fail: 193 194 inode_dec_link_count(inode); 194 - unlock_new_inode(inode); 195 - iput (inode); 195 + discard_new_inode(inode); 196 196 goto out; 197 197 } 198 198 ··· 259 261 out_fail: 260 262 inode_dec_link_count(inode); 261 263 inode_dec_link_count(inode); 262 - unlock_new_inode(inode); 263 - iput(inode); 264 + discard_new_inode(inode); 264 265 out_dir: 265 266 inode_dec_link_count(dir); 266 267 goto out;