diff options
Diffstat (limited to 'fs/ext3/resize.c')
| -rw-r--r-- | fs/ext3/resize.c | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/ext3/resize.c b/fs/ext3/resize.c index 57f79106267..1be78b4b4de 100644 --- a/fs/ext3/resize.c +++ b/fs/ext3/resize.c @@ -118,6 +118,8 @@ static struct buffer_head *bclean(handle_t *handle, struct super_block *sb,  	int err;  	bh = sb_getblk(sb, blk); +	if (!bh) +		return ERR_PTR(-EIO);  	if ((err = ext3_journal_get_write_access(handle, bh))) {  		brelse(bh);  		bh = ERR_PTR(err); @@ -202,6 +204,10 @@ static int setup_new_group_blocks(struct super_block *sb,  		ext3_debug("update backup group %#04lx (+%d)\n", block, bit);  		gdb = sb_getblk(sb, block); +		if (!gdb) { +			err = -EIO; +			goto exit_bh; +		}  		if ((err = ext3_journal_get_write_access(handle, gdb))) {  			brelse(gdb);  			goto exit_bh; @@ -643,6 +649,10 @@ static void update_backups(struct super_block *sb,  			break;  		bh = sb_getblk(sb, group * bpg + blk_off); +		if (!bh) { +			err = -EIO; +			break; +		}  		ext3_debug("update metadata backup %#04lx\n",  			  (unsigned long)bh->b_blocknr);  		if ((err = ext3_journal_get_write_access(handle, bh)))  | 
