From: Amir Vadai Date: Sun, 26 Mar 2017 10:24:19 +0000 (+0300) Subject: msg/async/rdma: Fix small memory leaks detected by valgrind X-Git-Tag: v12.0.2~230^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=23fd3efaafd4b4034bded605c88b57932b06646f;p=ceph.git msg/async/rdma: Fix small memory leaks detected by valgrind Issue: 995322 Change-Id: Iccffbd0defd09aa51c4b51b78733921444ea1c5f Signed-off-by: Amir Vadai --- diff --git a/src/msg/async/rdma/Device.cc b/src/msg/async/rdma/Device.cc index d993d9ca5c04..fc09063989ff 100644 --- a/src/msg/async/rdma/Device.cc +++ b/src/msg/async/rdma/Device.cc @@ -107,6 +107,11 @@ Port::Port(CephContext *cct, struct ibv_context* ictxt, uint8_t ipn): ctxt(ictxt #endif } +Port::~Port() +{ + delete port_attr; +} + Device::Device(CephContext *cct, Infiniband *ib, ibv_device* d) : cct(cct), device(d), lock("ibdev_lock"), @@ -201,12 +206,16 @@ void Device::uninit() Device::~Device() { + delete async_handler; + uninit(); if (active_port) { delete active_port; assert(ibv_close_device(ctxt) == 0); } + + delete device_attr; } void Device::binding_port(CephContext *cct, int port_num) { @@ -410,7 +419,7 @@ DeviceList::DeviceList(CephContext *cct, Infiniband *ib) DeviceList::~DeviceList() { - delete poll_fds; + delete[] poll_fds; for (int i=0; i < num; ++i) { delete devices[i]; diff --git a/src/msg/async/rdma/Device.h b/src/msg/async/rdma/Device.h index 2a00b51e3334..636fd76eb938 100644 --- a/src/msg/async/rdma/Device.h +++ b/src/msg/async/rdma/Device.h @@ -44,11 +44,12 @@ class Port { int port_num; struct ibv_port_attr* port_attr; uint16_t lid; - int gid_idx; + int gid_idx = 0; union ibv_gid gid; public: explicit Port(CephContext *cct, struct ibv_context* ictxt, uint8_t ipn); + ~Port(); uint16_t get_lid() { return lid; } ibv_gid get_gid() { return gid; } int get_port_num() { return port_num; }