From: Yehuda Sadeh Date: Mon, 5 Jun 2017 17:05:24 +0000 (-0700) Subject: rgw: fix a race X-Git-Tag: ses5-milestone6~8^2~7^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=93b8e834890d6d0bb82f91ed543e7c1ddc4f6f4e;p=ceph.git rgw: fix a race We referred to complete_op_data after aio call that could have released it. Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 2866323583a04..da976f1eb025a 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -12535,8 +12535,9 @@ int RGWRados::cls_obj_complete_op(BucketShard& bs, const rgw_obj& obj, RGWModify complete_op_data *arg; index_completion_manager->create_completion(obj, op, tag, ver, key, dir_meta, remove_objs, get_zone().log_data, bilog_flags, _zones_trace, &arg); + librados::AioCompletion *completion = arg->rados_completion; int ret = bs.index_ctx.aio_operate(bs.bucket_obj, arg->rados_completion, &o); - arg->rados_completion->release(); + completion->release(); /* can't reference arg here, as it might have already been released */ return ret; }