]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix segfault in UserAsyncRefreshHandler::init_fetch 45412/head
authorCory Snyder <csnyder@iland.com>
Wed, 2 Feb 2022 09:46:59 +0000 (04:46 -0500)
committerCory Snyder <csnyder@iland.com>
Wed, 16 Mar 2022 10:36:53 +0000 (06:36 -0400)
Fixes a segfault that was occuring in error handling code of UserAsyncRefreshHandler::init_fetch.
When ruser->read_stats_async returned an error code, the instance of UserAsyncRefreshHandler had
already been deallocated in RGWSI_User_RADOS::read_stats_async and a segmentation fault occurs
when attempting to print a member variable in error logs. This commit removes the extra ref count
drop since the ref is properly dropped upstream in RGWQuotaCache::async_refresh error handling
logic.

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

src/rgw/services/svc_user_rados.cc

index 31d42588f683ff849892da4acb298fafc8b3f00c..b6ba628889d3701596ab9134602ae06c614ebccd 100644 (file)
@@ -940,7 +940,6 @@ int RGWSI_User_RADOS::read_stats_async(RGWSI_MetaBackend::Context *ctx,
   RGWGetUserStatsContext *cb = new RGWGetUserStatsContext(_cb);
   int r = cls_user_get_header_async(user_str, cb);
   if (r < 0) {
-    _cb->put();
     delete cb;
     return r;
   }