From 93b8e834890d6d0bb82f91ed543e7c1ddc4f6f4e Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Mon, 5 Jun 2017 10:05:24 -0700 Subject: [PATCH] rgw: fix a race We referred to complete_op_data after aio call that could have released it. Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_rados.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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; } -- 2.39.5