diff options
Diffstat (limited to 'fs/ext2/ialloc.c')
| -rw-r--r-- | fs/ext2/ialloc.c | 9 | 
1 files changed, 4 insertions, 5 deletions
| diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c index ad7d572ee8dc..f0c5286f9342 100644 --- a/fs/ext2/ialloc.c +++ b/fs/ext2/ialloc.c @@ -106,7 +106,7 @@ void ext2_free_inode (struct inode * inode)  	struct super_block * sb = inode->i_sb;  	int is_directory;  	unsigned long ino; -	struct buffer_head *bitmap_bh = NULL; +	struct buffer_head *bitmap_bh;  	unsigned long block_group;  	unsigned long bit;  	struct ext2_super_block * es; @@ -135,14 +135,13 @@ void ext2_free_inode (struct inode * inode)  	    ino > le32_to_cpu(es->s_inodes_count)) {  		ext2_error (sb, "ext2_free_inode",  			    "reserved or nonexistent inode %lu", ino); -		goto error_return; +		return;  	}  	block_group = (ino - 1) / EXT2_INODES_PER_GROUP(sb);  	bit = (ino - 1) % EXT2_INODES_PER_GROUP(sb); -	brelse(bitmap_bh);  	bitmap_bh = read_inode_bitmap(sb, block_group);  	if (!bitmap_bh) -		goto error_return; +		return;  	/* Ok, now we can actually update the inode bitmaps.. */  	if (!ext2_clear_bit_atomic(sb_bgl_lock(EXT2_SB(sb), block_group), @@ -154,7 +153,7 @@ void ext2_free_inode (struct inode * inode)  	mark_buffer_dirty(bitmap_bh);  	if (sb->s_flags & MS_SYNCHRONOUS)  		sync_dirty_buffer(bitmap_bh); -error_return: +  	brelse(bitmap_bh);  } | 
