gfs2: No more self recovery
authorAndreas Gruenbacher <agruenba@redhat.com>
Wed, 16 Jul 2025 21:30:32 +0000 (23:30 +0200)
committerAndreas Gruenbacher <agruenba@redhat.com>
Wed, 16 Jul 2025 21:30:32 +0000 (23:30 +0200)
commitdeb016c1669002e48c431d6fd32ea1c20ef41756
tree1db32c005a4eaf14392a8edc54445d1e7447290b
parent557c024ca7250bb65ae60f16c02074106c2f197b
gfs2: No more self recovery

When a node withdraws and it turns out that it is the only node that has
the filesystem mounted, gfs2 currently tries to replay the local journal
to bring the filesystem back into a consistent state.  Not only is that
a very bad idea, it has also never worked because gfs2_recover_func()
will refuse to do anything during a withdraw.

However, before even getting to this point, gfs2_recover_func()
dereferences sdp->sd_jdesc->jd_inode.  This was a use-after-free before
commit 04133b607a78 ("gfs2: Prevent double iput for journal on error")
and is a NULL pointer dereference since then.

Simply get rid of self recovery to fix that.

Fixes: 601ef0d52e96 ("gfs2: Force withdraw to replay journals and wait for it to finish")
Reported-by: Chunjie Zhu <chunjie.zhu@cloud.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/util.c