From c181a2e5e7d5c4663112ff6af90cee286779c278 Mon Sep 17 00:00:00 2001 From: Arthur Outhenin-Chalandre Date: Wed, 24 Mar 2021 10:05:07 +0100 Subject: [PATCH] rbd-mirror: fix UB while registering perf counters register_perf_counters was called before m_image_spec initialization resulting in UB in the perf counters' name. This moves the register_perf_counters() call to the init function after the m_image_spec initialization. Fixes: https://tracker.ceph.com/issues/49959 Signed-off-by: Arthur Outhenin-Chalandre (cherry picked from commit 5e3b9d29b3a81923fed51248aa21749dbecfcd73) --- .../rbd_mirror/image_replayer/journal/Replayer.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/tools/rbd_mirror/image_replayer/journal/Replayer.cc b/src/tools/rbd_mirror/image_replayer/journal/Replayer.cc index ea0f9093c3b7c..a2d47f5505155 100644 --- a/src/tools/rbd_mirror/image_replayer/journal/Replayer.cc +++ b/src/tools/rbd_mirror/image_replayer/journal/Replayer.cc @@ -148,11 +148,6 @@ Replayer::Replayer( m_lock(ceph::make_mutex(librbd::util::unique_lock_name( "rbd::mirror::image_replayer::journal::Replayer", this))) { dout(10) << dendl; - - { - std::unique_lock locker{m_lock}; - register_perf_counters(); - } } template @@ -186,6 +181,11 @@ void Replayer::init(Context* on_finish) { local_image_ctx->name); } + { + std::unique_lock locker{m_lock}; + register_perf_counters(); + } + ceph_assert(m_on_init_shutdown == nullptr); m_on_init_shutdown = on_finish; -- 2.39.5