]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix segfault in UserAsyncRefreshHandler::init_fetch 45411/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:25 +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 eb30f3e663ee2cdc9c7db7d62e872f0cecd5c241..2d82234e4b25df869380e02c6d72798da1efe129 100644 (file)
@@ -963,7 +963,6 @@ int RGWSI_User_RADOS::read_stats_async(const DoutPrefixProvider *dpp, RGWSI_Meta
   RGWGetUserStatsContext *cb = new RGWGetUserStatsContext(_cb);
   int r = cls_user_get_header_async(dpp, user_str, cb);
   if (r < 0) {
-    _cb->put();
     delete cb;
     return r;
   }