]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
rbd-mirror: release lock before calling m_async_op_tracker.finish_op()
authorVinayBhaskar-V <vvarada@redhat.com>
Wed, 16 Apr 2025 15:52:21 +0000 (21:22 +0530)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 23 Jun 2025 06:45:30 +0000 (08:45 +0200)
commit43edec80d2de231011d3abc687bffd3e4c2f0f94
tree641653c04de1c073dd8766ddbd96d1a757c428f7
parent963b649673fc234c5c2c15451b1aba7d79127f7f
rbd-mirror: release lock before calling m_async_op_tracker.finish_op()

m_async_op_tracker.finish_op() in InstanceReplayer::start_image_replayers
may invoke a completion that re-enters code paths that attempt to acquire
the same mutex (m_lock), violating the non-recursive lock constraint.
This can be fixed by releasing the lock before calling
m_async_op_tracker.finish_op().

Fixes: https://tracker.ceph.com/issues/70951
Signed-off-by: VinayBhaskar-V <vvarada@redhat.com>
(cherry picked from commit 07e44074ae5d18dc1248e557fd1aa2dbe39792c6)
src/tools/rbd_mirror/InstanceReplayer.cc
src/tools/rbd_mirror/InstanceReplayer.h