summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2007-07-17 10:29:02 +0100
committerSteven Whitehouse <swhiteho@redhat.com>2007-08-14 10:33:44 +0100
commita867bb28c1cb49ae86d034d8bd8fe6dbcbb19566 (patch)
tree0ab8fbdfa681ebb47979cc5ae645f7b8855581d5
parent6eefaf61f664053c1dd6534a994cab3f8bb07263 (diff)
downloadlinux-a867bb28c1cb49ae86d034d8bd8fe6dbcbb19566.tar.gz
linux-a867bb28c1cb49ae86d034d8bd8fe6dbcbb19566.tar.bz2
linux-a867bb28c1cb49ae86d034d8bd8fe6dbcbb19566.zip
[GFS2] Fix incorrect error path in prepare_write()
The error path in prepare_write() was incorrect in the (very rare) event that the transaction fails to start. The following prevents a NULL pointer dereference, Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
-rw-r--r--fs/gfs2/ops_address.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/gfs2/ops_address.c b/fs/gfs2/ops_address.c
index ce90032c010e..42a5f58f6fca 100644
--- a/fs/gfs2/ops_address.c
+++ b/fs/gfs2/ops_address.c
@@ -416,7 +416,7 @@ static int gfs2_prepare_write(struct file *file, struct page *page,
error = gfs2_trans_begin(sdp, rblocks, 0);
if (error)
- goto out;
+ goto out_trans_fail;
if (gfs2_is_stuffed(ip)) {
if (end > sdp->sd_sb.sb_bsize - sizeof(struct gfs2_dinode)) {
@@ -434,6 +434,7 @@ prepare_write:
out:
if (error) {
gfs2_trans_end(sdp);
+out_trans_fail:
if (alloc_required) {
gfs2_inplace_release(ip);
out_qunlock: