diff options
Diffstat (limited to 'fs/fat/inode.c')
| -rw-r--r-- | fs/fat/inode.c | 19 | 
1 files changed, 7 insertions, 12 deletions
| diff --git a/fs/fat/inode.c b/fs/fat/inode.c index 594b05ae16c9..71946da84388 100644 --- a/fs/fat/inode.c +++ b/fs/fat/inode.c @@ -750,6 +750,13 @@ static struct inode *fat_alloc_inode(struct super_block *sb)  		return NULL;  	init_rwsem(&ei->truncate_lock); +	/* Zeroing to allow iput() even if partial initialized inode. */ +	ei->mmu_private = 0; +	ei->i_start = 0; +	ei->i_logstart = 0; +	ei->i_attrs = 0; +	ei->i_pos = 0; +  	return &ei->vfs_inode;  } @@ -1374,16 +1381,6 @@ out:  	return 0;  } -static void fat_dummy_inode_init(struct inode *inode) -{ -	/* Initialize this dummy inode to work as no-op. */ -	MSDOS_I(inode)->mmu_private = 0; -	MSDOS_I(inode)->i_start = 0; -	MSDOS_I(inode)->i_logstart = 0; -	MSDOS_I(inode)->i_attrs = 0; -	MSDOS_I(inode)->i_pos = 0; -} -  static int fat_read_root(struct inode *inode)  {  	struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); @@ -1844,13 +1841,11 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat,  	fat_inode = new_inode(sb);  	if (!fat_inode)  		goto out_fail; -	fat_dummy_inode_init(fat_inode);  	sbi->fat_inode = fat_inode;  	fsinfo_inode = new_inode(sb);  	if (!fsinfo_inode)  		goto out_fail; -	fat_dummy_inode_init(fsinfo_inode);  	fsinfo_inode->i_ino = MSDOS_FSINFO_INO;  	sbi->fsinfo_inode = fsinfo_inode;  	insert_inode_hash(fsinfo_inode); |