]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async/rdma: Fix small memory leaks detected by valgrind 14288/head
authorAmir Vadai <amir@vadai.me>
Sun, 26 Mar 2017 10:24:19 +0000 (13:24 +0300)
committerAdir Lev <adirl@mellanox.com>
Sun, 2 Apr 2017 13:47:46 +0000 (16:47 +0300)
Issue: 995322
Change-Id: Iccffbd0defd09aa51c4b51b78733921444ea1c5f
Signed-off-by: Amir Vadai <amir@vadai.me>
src/msg/async/rdma/Device.cc
src/msg/async/rdma/Device.h

index d993d9ca5c043c2048fc2013e4ef4e794f044a7f..fc09063989ffcd3bc5d9d52da371cc3319255ac7 100644 (file)
@@ -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];
index 2a00b51e3334d189314b8bd8f1ed3bf45ea6ea6f..636fd76eb9383d8f92545ce5786fe069f6fe605a 100644 (file)
@@ -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; }