]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
rbd-mirror: release lock before calling m_async_op_tracker.finish_op() 64092/head
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:46:37 +0000 (08:46 +0200)
commit7e38b56bb58365713d773190bb7b9809442ce5f3
treeef5708583e7d7bd0981341696d9ed7ac18c64f67
parenta4fd6422c851bea3dbb7d67e97c52200057fb559
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