From: Jianjian Huo Date: Wed, 17 Feb 2016 16:24:25 +0000 (-0800) Subject: os/kstore: fix onode_t attr leak in _setattrs() X-Git-Tag: v10.1.0~313^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=180a12a09dbf80ae6f9b9795aa26fdd31f651c36;p=ceph.git os/kstore: fix onode_t attr leak in _setattrs() Signed-off-by: Jianjian Huo --- diff --git a/src/os/kstore/KStore.cc b/src/os/kstore/KStore.cc index 20e0ac0d3a69..9628c64d50ec 100644 --- a/src/os/kstore/KStore.cc +++ b/src/os/kstore/KStore.cc @@ -3125,8 +3125,12 @@ int KStore::_setattrs(TransContext *txc, << dendl; int r = 0; for (map::const_iterator p = aset.begin(); - p != aset.end(); ++p) - o->onode.attrs[p->first] = p->second; + p != aset.end(); ++p) { + if (p->second.is_partial()) + o->onode.attrs[p->first] = bufferptr(p->second.c_str(), p->second.length()); + else + o->onode.attrs[p->first] = p->second; + } txc->write_onode(o); dout(10) << __func__ << " " << c->cid << " " << o->oid << " " << aset.size() << " keys"