aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAkinobu Mita <[email protected]>2008-04-28 09:16:08 +0000
committerLinus Torvalds <[email protected]>2008-04-28 15:58:44 +0000
commit33575f8ffe99bf9e381161ccd76b39079c0aa92f (patch)
treed5a60b89243bf1964a2feaf80e0ea576b3a14762
parentext3: use ext3_get_group_desc() (diff)
downloadkernel-33575f8ffe99bf9e381161ccd76b39079c0aa92f.tar.gz
kernel-33575f8ffe99bf9e381161ccd76b39079c0aa92f.zip
ext3: check ext3_journal_get_write_access() errors
Check ext3_journal_get_write_access() errors. Signed-off-by: Akinobu Mita <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r--fs/ext3/namei.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c
index dec3e0d88ab1..ba55865caaaf 100644
--- a/fs/ext3/namei.c
+++ b/fs/ext3/namei.c
@@ -57,10 +57,15 @@ static struct buffer_head *ext3_append(handle_t *handle,
*block = inode->i_size >> inode->i_sb->s_blocksize_bits;
- if ((bh = ext3_bread(handle, inode, *block, 1, err))) {
+ bh = ext3_bread(handle, inode, *block, 1, err);
+ if (bh) {
inode->i_size += inode->i_sb->s_blocksize;
EXT3_I(inode)->i_disksize = inode->i_size;
- ext3_journal_get_write_access(handle,bh);
+ *err = ext3_journal_get_write_access(handle, bh);
+ if (*err) {
+ brelse(bh);
+ bh = NULL;
+ }
}
return bh;
}