diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2007-07-17 10:29:02 +0100 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2007-08-14 10:33:44 +0100 |
commit | a867bb28c1cb49ae86d034d8bd8fe6dbcbb19566 (patch) | |
tree | 0ab8fbdfa681ebb47979cc5ae645f7b8855581d5 /fs | |
parent | 6eefaf61f664053c1dd6534a994cab3f8bb07263 (diff) | |
download | linux-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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/gfs2/ops_address.c | 3 |
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: |