From: Casey Bodley Date: Tue, 11 Oct 2016 19:19:37 +0000 (-0400) Subject: rgw: clear data_sync_cr if RGWDataSyncControlCR fails X-Git-Tag: v11.1.0~451^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5cc599b9bf2dde31de16a5b2831baf06851d69d5;p=ceph.git rgw: clear data_sync_cr if RGWDataSyncControlCR fails async notifications will still try to call wakeup() on RGWDataSyncControlCR if it fails, leading to segfault Fixes: http://tracker.ceph.com/issues/17569 Signed-off-by: Casey Bodley --- diff --git a/src/rgw/rgw_data_sync.cc b/src/rgw/rgw_data_sync.cc index 1cd2e02974c8..e4cdfbe92968 100644 --- a/src/rgw/rgw_data_sync.cc +++ b/src/rgw/rgw_data_sync.cc @@ -1582,16 +1582,17 @@ int RGWRemoteDataLog::run_sync(int num_shards) lock.get_write(); data_sync_cr = new RGWDataSyncControlCR(&sync_env, num_shards); lock.unlock(); + int r = run(data_sync_cr); - if (r < 0) { - ldout(store->ctx(), 0) << "ERROR: failed to run sync" << dendl; - return r; - } lock.get_write(); data_sync_cr = NULL; lock.unlock(); + if (r < 0) { + ldout(store->ctx(), 0) << "ERROR: failed to run sync" << dendl; + return r; + } return 0; }