diff options
author | Glauber de Oliveira Costa <glommer@br.ibm.com> | 2005-10-30 18:03:05 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-30 20:37:26 -0500 |
commit | 2973dfdb877c17b36c27ba66d71028ff1eb2f32e (patch) | |
tree | 9734599068f3fcf7cd33f948235588f7a275d193 /fs/ext2 | |
parent | 7f04c26d715a2467a49a2384268de8f70f787b51 (diff) |
[PATCH] Test for sb_getblk return value
This patch adds tests for the return value of sb_getblk() in the ext2/3
filesystems. In fs/buffer.c it is stated that the getblk() function never
fails. However, it does can return NULL in some situations due to I/O
errors, which may lead us to NULL pointer dereferences
Signed-off-by: Glauber de Oliveira Costa <glommer@br.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/ext2')
-rw-r--r-- | fs/ext2/inode.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c index fdba4d1d3c6..e7d3f0522d0 100644 --- a/fs/ext2/inode.c +++ b/fs/ext2/inode.c | |||
@@ -440,6 +440,10 @@ static int ext2_alloc_branch(struct inode *inode, | |||
440 | * the pointer to new one, then send parent to disk. | 440 | * the pointer to new one, then send parent to disk. |
441 | */ | 441 | */ |
442 | bh = sb_getblk(inode->i_sb, parent); | 442 | bh = sb_getblk(inode->i_sb, parent); |
443 | if (!bh) { | ||
444 | err = -EIO; | ||
445 | break; | ||
446 | } | ||
443 | lock_buffer(bh); | 447 | lock_buffer(bh); |
444 | memset(bh->b_data, 0, blocksize); | 448 | memset(bh->b_data, 0, blocksize); |
445 | branch[n].bh = bh; | 449 | branch[n].bh = bh; |