From 23fd3efaafd4b4034bded605c88b57932b06646f Mon Sep 17 00:00:00 2001 From: Amir Vadai Date: Sun, 26 Mar 2017 13:24:19 +0300 Subject: [PATCH] msg/async/rdma: Fix small memory leaks detected by valgrind Issue: 995322 Change-Id: Iccffbd0defd09aa51c4b51b78733921444ea1c5f Signed-off-by: Amir Vadai --- src/msg/async/rdma/Device.cc | 11 ++++++++++- src/msg/async/rdma/Device.h | 3 ++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/msg/async/rdma/Device.cc b/src/msg/async/rdma/Device.cc index d993d9ca5c0..fc09063989f 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 2a00b51e333..636fd76eb93 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; } -- 2.39.5