Vlad, Please pull for OFED-1.4.1:
git://git.openfabrics.org/~ralphc/libipathverbs/.git ofed_1_4 commit 337df3c1cbe43c3e9cb58e7f6e91f44603dd23fb Author: Patrick Latifi <[email protected]> Date: Thu Mar 12 12:46:25 2009 -0700 IB/libipathverbs: fix memory leak in error path If the CQ or QP is created but the queue cannot be mmapped, be sure to delete the allocated CQ or QP. Signed-off-by: Patrick Latifi <[email protected]> diff --git a/src/verbs.c b/src/verbs.c index dcd8efb..b73b7f7 100644 --- a/src/verbs.c +++ b/src/verbs.c @@ -182,6 +182,7 @@ struct ibv_cq *ipath_create_cq(struct ibv_context *context, int cqe, cq->queue = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, context->cmd_fd, resp.offset); if ((void *) cq->queue == MAP_FAILED) { + ibv_cmd_destroy_cq(&cq->ibv_cq); free(cq); return NULL; } @@ -338,6 +339,7 @@ struct ibv_qp *ipath_create_qp(struct ibv_pd *pd, struct ibv_qp_init_attr *attr) PROT_READ | PROT_WRITE, MAP_SHARED, pd->context->cmd_fd, resp.offset); if ((void *) qp->rq.rwq == MAP_FAILED) { + ibv_cmd_destroy_qp(&qp->ibv_qp); free(qp); return NULL; } @@ -532,6 +534,7 @@ struct ibv_srq *ipath_create_srq(struct ibv_pd *pd, srq->rq.rwq = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, pd->context->cmd_fd, resp.offset); if ((void *) srq->rq.rwq == MAP_FAILED) { + ibv_cmd_destroy_srq(&srq->ibv_srq); free(srq); return NULL; } _______________________________________________ ewg mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg
