gfs2: fix glock reference problem in gfs2_trans_remove_revoke
authorBob Peterson <rpeterso@redhat.com>
Thu, 14 Nov 2019 14:49:11 +0000 (09:49 -0500)
committerAndreas Gruenbacher <agruenba@redhat.com>
Thu, 14 Nov 2019 15:51:00 +0000 (16:51 +0100)
commitfe5e7ba11fcf1d75af8173836309e8562aefedef
treec10085dc5073f46c1472d98d12106f7e21dc523d
parentfeed98a8e5f3e54a8c41a3b26aa914db5d7e3c18
gfs2: fix glock reference problem in gfs2_trans_remove_revoke

Commit 9287c6452d2b fixed a situation in which gfs2 could use a glock
after it had been freed. To do that, it temporarily added a new glock
reference by calling gfs2_glock_hold in function gfs2_add_revoke.
However, if the bd element was removed by gfs2_trans_remove_revoke, it
failed to drop the additional reference.

This patch adds logic to gfs2_trans_remove_revoke to properly drop the
additional glock reference.

Fixes: 9287c6452d2b ("gfs2: Fix occasional glock use-after-free")
Cc: stable@vger.kernel.org # v5.2+
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/log.c
fs/gfs2/log.h
fs/gfs2/lops.c
fs/gfs2/trans.c