]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix segfault in OpsLogRados::log when realm is reloaded 45074/head
authorCory Snyder <csnyder@iland.com>
Thu, 3 Feb 2022 19:48:05 +0000 (14:48 -0500)
committerCasey Bodley <cbodley@redhat.com>
Thu, 17 Feb 2022 14:46:55 +0000 (09:46 -0500)
We weren't previously handling the deallocation of the store when
a realm was reloaded. Now passing a const reference to the pointer.

Fixes: https://tracker.ceph.com/issues/54130
Signed-off-by: Cory Snyder <csnyder@iland.com>
(cherry picked from commit 0713f65355586b2f6ceeb6bbce8763158847e5ed)

src/rgw/rgw_log.cc
src/rgw/rgw_log.h

index 4214708ef1562121a3206d40b1c482abed47e65d..bd2c360655cf079e76045874f22039a2357d1437 100644 (file)
@@ -472,7 +472,7 @@ int OpsLogSocket::log_json(struct req_state* s, bufferlist& bl)
   return 0;
 }
 
-OpsLogRados::OpsLogRados(rgw::sal::Store* store): store(store)
+OpsLogRados::OpsLogRados(rgw::sal::Store* const& store): store(store)
 {
 }
 
index a087aa130980625a9d62849dd21d1679e013b107..3495ef086290dd8e786694d5fd1ca3f37ff413c2 100644 (file)
@@ -199,9 +199,11 @@ public:
 };
 
 class OpsLogRados : public OpsLogSink {
-  rgw::sal::Store* store;
+  // main()'s Store pointer as a reference, possibly modified by RGWRealmReloader
+  rgw::sal::Store* const& store;
+
 public:
-  OpsLogRados(rgw::sal::Store* store);
+  OpsLogRados(rgw::sal::Store* const& store);
   int log(struct req_state* s, struct rgw_log_entry& entry) override;
 };