From: Jianpeng Ma Date: Wed, 18 Mar 2015 13:11:04 +0000 (+0800) Subject: osd/ReplicatedPG: Fix a memory leak in do_pg_op. X-Git-Tag: v9.0.0~90^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b6cdc566e65567c46c9888892d1bb044dddddcde;p=ceph.git osd/ReplicatedPG: Fix a memory leak in do_pg_op. If op have pgls_filter & pgnls_filter at the same time, it don't free the first filter. Signed-off-by: Jianpeng Ma --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index c7bf2980539..785ec708a11 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1008,6 +1008,8 @@ void ReplicatedPG::do_pg_op(OpRequestRef op) dout(10) << " pgnls result=" << result << " outdata.length()=" << osd_op.outdata.length() << dendl; } + delete filter; + filter = NULL; break; case CEPH_OSD_OP_PGLS_FILTER: @@ -1156,6 +1158,8 @@ void ReplicatedPG::do_pg_op(OpRequestRef op) dout(10) << " pgls result=" << result << " outdata.length()=" << osd_op.outdata.length() << dendl; } + delete filter; + filter = NULL; break; case CEPH_OSD_OP_PG_HITSET_LS: @@ -1209,7 +1213,6 @@ void ReplicatedPG::do_pg_op(OpRequestRef op) } if (is_unreadable_object(oid)) { wait_for_unreadable_object(oid, op); - delete filter; return; } result = osd->store->read(coll, oid, 0, 0, osd_op.outdata);