diff options
author | Andreas Gruenbacher <agruenba@redhat.com> | 2017-12-12 16:42:01 +0100 |
---|---|---|
committer | Bob Peterson <rpeterso@redhat.com> | 2018-01-17 06:35:42 -0700 |
commit | 80990f404d2e557634509e670af059c2a6fa6c5f (patch) | |
tree | 74d134d2b22678767d82aa9227b8c56691bf3249 /fs/gfs2 | |
parent | da5eb9cdda2917b44dc9da7c8811d0db29f6b201 (diff) | |
download | linux-stable-80990f404d2e557634509e670af059c2a6fa6c5f.tar.gz linux-stable-80990f404d2e557634509e670af059c2a6fa6c5f.tar.bz2 linux-stable-80990f404d2e557634509e670af059c2a6fa6c5f.zip |
gfs2: Clean up trunc_start error path
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Diffstat (limited to 'fs/gfs2')
-rw-r--r-- | fs/gfs2/bmap.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c index 8b993e4d80b2..0ad6d812c78b 100644 --- a/fs/gfs2/bmap.c +++ b/fs/gfs2/bmap.c @@ -1022,7 +1022,7 @@ static int trunc_start(struct inode *inode, u64 oldsize, u64 newsize) struct gfs2_inode *ip = GFS2_I(inode); struct gfs2_sbd *sdp = GFS2_SB(inode); struct address_space *mapping = inode->i_mapping; - struct buffer_head *dibh; + struct buffer_head *dibh = NULL; int journaled = gfs2_is_jdata(ip); int error; @@ -1045,7 +1045,7 @@ static int trunc_start(struct inode *inode, u64 oldsize, u64 newsize) if (newsize & (u64)(sdp->sd_sb.sb_bsize - 1)) { error = gfs2_block_truncate_page(mapping, newsize); if (error) - goto out_brelse; + goto out; } ip->i_diskflags |= GFS2_DIF_TRUNC_IN_PROG; } @@ -1059,15 +1059,10 @@ static int trunc_start(struct inode *inode, u64 oldsize, u64 newsize) else truncate_pagecache(inode, newsize); - if (error) { - brelse(dibh); - return error; - } - -out_brelse: - brelse(dibh); out: - gfs2_trans_end(sdp); + brelse(dibh); + if (current->journal_info) + gfs2_trans_end(sdp); return error; } |