summaryrefslogtreecommitdiffstats
path: root/fs/gfs2/inode.c
diff options
context:
space:
mode:
authorBob Peterson <rpeterso@redhat.com>2018-01-29 10:00:23 -0700
committerBob Peterson <rpeterso@redhat.com>2018-01-29 10:00:23 -0700
commit2eb5909dee9bcce9c0befdef48c00f1132d9de2e (patch)
treec3345845f88e7b131a9c6d9cc1047cb3f75a53b0 /fs/gfs2/inode.c
parent4519eaad724e868a5fd1f82123eefebcaed775ad (diff)
downloadlinux-2eb5909dee9bcce9c0befdef48c00f1132d9de2e.tar.gz
linux-2eb5909dee9bcce9c0befdef48c00f1132d9de2e.tar.bz2
linux-2eb5909dee9bcce9c0befdef48c00f1132d9de2e.zip
GFS2: Don't try to end a non-existent transaction in unlink
Before this patch, if function gfs2_unlink failed to get a valid transaction (for example, not enough journal blocks) it would go to label out_end_trans which did gfs2_trans_end. But if the trans_begin failed, there's no transaction to end, and trying to do so results in: kernel BUG at fs/gfs2/trans.c:117! This patch changes the goto so that it does not try to end a non-existent transaction. Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Diffstat (limited to 'fs/gfs2/inode.c')
-rw-r--r--fs/gfs2/inode.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index 20281992d456..59e0560180ec 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -1152,12 +1152,11 @@ static int gfs2_unlink(struct inode *dir, struct dentry *dentry)
error = gfs2_trans_begin(sdp, 2*RES_DINODE + 3*RES_LEAF + RES_RG_BIT, 0);
if (error)
- goto out_end_trans;
+ goto out_gunlock;
error = gfs2_unlink_inode(dip, dentry);
-
-out_end_trans:
gfs2_trans_end(sdp);
+
out_gunlock:
gfs2_glock_dq(ghs + 2);
out_rgrp: