Skip to content

Commit 6fd5041

Browse files
committed
Merge pull request #1264 from artpol84/vader_resource_leak_fix
Fix vader resource leak.
2 parents 2d9aa38 + a20826e commit 6fd5041

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

opal/mca/btl/vader/btl_vader.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,14 @@ mca_btl_base_descriptor_t* mca_btl_vader_alloc (struct mca_btl_base_module_t* bt
263263
struct mca_btl_base_endpoint_t* endpoint,
264264
uint8_t order, size_t size, uint32_t flags);
265265

266+
/**
267+
* Return a segment allocated by this BTL.
268+
*
269+
* @param btl (IN) BTL module
270+
* @param segment (IN) Allocated segment.
271+
*/
272+
int mca_btl_vader_free (struct mca_btl_base_module_t *btl, mca_btl_base_descriptor_t *des);
273+
266274

267275
END_C_DECLS
268276

opal/mca/btl/vader/btl_vader_module.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ static int vader_register_error_cb (struct mca_btl_base_module_t* btl,
4343

4444
static int vader_finalize (struct mca_btl_base_module_t* btl);
4545

46-
static int vader_free (struct mca_btl_base_module_t* btl, mca_btl_base_descriptor_t* des);
47-
4846
static struct mca_btl_base_descriptor_t *vader_prepare_src (
4947
struct mca_btl_base_module_t *btl,
5048
struct mca_btl_base_endpoint_t *endpoint,
@@ -69,7 +67,7 @@ mca_btl_vader_t mca_btl_vader = {
6967
.btl_del_procs = vader_del_procs,
7068
.btl_finalize = vader_finalize,
7169
.btl_alloc = mca_btl_vader_alloc,
72-
.btl_free = vader_free,
70+
.btl_free = mca_btl_vader_free,
7371
.btl_prepare_src = vader_prepare_src,
7472
.btl_send = mca_btl_vader_send,
7573
.btl_sendi = mca_btl_vader_sendi,
@@ -411,7 +409,7 @@ mca_btl_base_descriptor_t *mca_btl_vader_alloc(struct mca_btl_base_module_t *btl
411409
* @param btl (IN) BTL module
412410
* @param segment (IN) Allocated segment.
413411
*/
414-
static int vader_free (struct mca_btl_base_module_t *btl, mca_btl_base_descriptor_t *des)
412+
int mca_btl_vader_free (struct mca_btl_base_module_t *btl, mca_btl_base_descriptor_t *des)
415413
{
416414
MCA_BTL_VADER_FRAG_RETURN((mca_btl_vader_frag_t *) des);
417415

opal/mca/btl/vader/btl_vader_sendi.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ int mca_btl_vader_sendi (struct mca_btl_base_module_t *btl,
105105
if (!vader_fifo_write_ep (frag->hdr, endpoint)) {
106106
if (descriptor) {
107107
*descriptor = &frag->base;
108+
} else {
109+
mca_btl_vader_free (btl, &frag->base);
108110
}
109111
return OPAL_ERR_OUT_OF_RESOURCE;
110112
}

0 commit comments

Comments
 (0)