diff options
author | Yuval Shaia | 2019-01-16 16:15:38 +0100 |
---|---|---|
committer | Marcel Apfelbaum | 2019-01-19 09:54:37 +0100 |
commit | a1aa88b7dcac2b22d74908f9276d5d145d8e65a0 (patch) | |
tree | 3f3952ec6c4b83f25fc4949bfe3ab559e937f0a9 /hw/rdma/rdma_rm.c | |
parent | hw/pvrdma: Make function pvrdma_qp_send/recv return void. (diff) | |
download | qemu-a1aa88b7dcac2b22d74908f9276d5d145d8e65a0.tar.gz qemu-a1aa88b7dcac2b22d74908f9276d5d145d8e65a0.tar.xz qemu-a1aa88b7dcac2b22d74908f9276d5d145d8e65a0.zip |
hw/rdma: Verify that ptr is not NULL before freeing
To cover the case where fini() was called even when init() fails make
sure objects are not NULL before calling to non-null-safe destructors.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190116151538.14088-1-yuval.shaia@oracle.com>
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Diffstat (limited to 'hw/rdma/rdma_rm.c')
-rw-r--r-- | hw/rdma/rdma_rm.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/hw/rdma/rdma_rm.c b/hw/rdma/rdma_rm.c index f5b1295890..8bf241e91f 100644 --- a/hw/rdma/rdma_rm.c +++ b/hw/rdma/rdma_rm.c @@ -41,6 +41,9 @@ static inline void res_tbl_init(const char *name, RdmaRmResTbl *tbl, static inline void res_tbl_free(RdmaRmResTbl *tbl) { + if (!tbl->bitmap) { + return; + } qemu_mutex_destroy(&tbl->lock); g_free(tbl->tbl); g_free(tbl->bitmap); @@ -655,5 +658,7 @@ void rdma_rm_fini(RdmaDeviceResources *dev_res, RdmaBackendDev *backend_dev, res_tbl_free(&dev_res->cq_tbl); res_tbl_free(&dev_res->pd_tbl); - g_hash_table_destroy(dev_res->qp_hash); + if (dev_res->qp_hash) { + g_hash_table_destroy(dev_res->qp_hash); + } } |