|
@@ -523,7 +523,6 @@ static int ext3_alloc_branch(handle_t *handle, struct inode *inode,
|
|
|
if (!nr)
|
|
|
break;
|
|
|
branch[n].key = cpu_to_le32(nr);
|
|
|
- keys = n+1;
|
|
|
|
|
|
/*
|
|
|
* Get buffer_head for parent block, zero it out
|
|
@@ -531,6 +530,9 @@ static int ext3_alloc_branch(handle_t *handle, struct inode *inode,
|
|
|
* parent to disk.
|
|
|
*/
|
|
|
bh = sb_getblk(inode->i_sb, parent);
|
|
|
+ if (!bh)
|
|
|
+ break;
|
|
|
+ keys = n+1;
|
|
|
branch[n].bh = bh;
|
|
|
lock_buffer(bh);
|
|
|
BUFFER_TRACE(bh, "call get_create_access");
|
|
@@ -864,6 +866,10 @@ struct buffer_head *ext3_getblk(handle_t *handle, struct inode * inode,
|
|
|
if (!*errp && buffer_mapped(&dummy)) {
|
|
|
struct buffer_head *bh;
|
|
|
bh = sb_getblk(inode->i_sb, dummy.b_blocknr);
|
|
|
+ if (!bh) {
|
|
|
+ *errp = -EIO;
|
|
|
+ goto err;
|
|
|
+ }
|
|
|
if (buffer_new(&dummy)) {
|
|
|
J_ASSERT(create != 0);
|
|
|
J_ASSERT(handle != 0);
|
|
@@ -896,6 +902,7 @@ struct buffer_head *ext3_getblk(handle_t *handle, struct inode * inode,
|
|
|
}
|
|
|
return bh;
|
|
|
}
|
|
|
+err:
|
|
|
return NULL;
|
|
|
}
|
|
|
|