diff --git a/src/client/msgr_op.cpp b/src/client/msgr_op.cpp index a4657bd6..84dd0a0f 100644 --- a/src/client/msgr_op.cpp +++ b/src/client/msgr_op.cpp @@ -8,6 +8,7 @@ osd_op_t::~osd_op_t() { assert(!bs_op); + assert(!op_data); if (bitmap_buf) { free(bitmap_buf); @@ -22,10 +23,6 @@ osd_op_t::~osd_op_t() // So we don't reuse it, but free it every time free(buf); } - if (op_data) - { - free(op_data); - } } bool osd_op_t::is_recovery_related() diff --git a/src/osd/osd_primary_subops.cpp b/src/osd/osd_primary_subops.cpp index 02382ae4..e3314b44 100644 --- a/src/osd/osd_primary_subops.cpp +++ b/src/osd/osd_primary_subops.cpp @@ -83,6 +83,8 @@ void osd_t::finish_op(osd_op_t *cur_op, int retval) rm_inflight(pg); } assert(!cur_op->op_data->subops); + free(cur_op->op_data); + cur_op->op_data = NULL; } cur_op->reply.hdr.magic = SECONDARY_OSD_REPLY_MAGIC; cur_op->reply.hdr.id = cur_op->req.hdr.id;