diff --git a/opal/mca/btl/ofi/btl_ofi_atomics.c b/opal/mca/btl/ofi/btl_ofi_atomics.c index 34fa9cc4776..f9b2447130b 100644 --- a/opal/mca/btl/ofi/btl_ofi_atomics.c +++ b/opal/mca/btl/ofi/btl_ofi_atomics.c @@ -73,8 +73,10 @@ int mca_btl_ofi_afop (struct mca_btl_base_module_t *btl, struct mca_btl_base_end fi_datatype, fi_op, &comp->comp_ctx); if (rc == -FI_EAGAIN) { + opal_free_list_return(comp->base.my_list, (opal_free_list_item_t*) comp); return OPAL_ERR_OUT_OF_RESOURCE; } else if (rc < 0) { + opal_free_list_return(comp->base.my_list, (opal_free_list_item_t*) comp); BTL_ERROR(("fi_fetch_atomic failed with rc=%d (%s)", rc, fi_strerror(-rc))); MCA_BTL_OFI_ABORT(); } @@ -125,8 +127,10 @@ int mca_btl_ofi_aop (struct mca_btl_base_module_t *btl, mca_btl_base_endpoint_t fi_datatype, fi_op, &comp->comp_ctx); if (rc == -FI_EAGAIN) { + opal_free_list_return(comp->base.my_list, (opal_free_list_item_t*) comp); return OPAL_ERR_OUT_OF_RESOURCE; } else if (rc < 0) { + opal_free_list_return(comp->base.my_list, (opal_free_list_item_t*) comp); BTL_ERROR(("fi_atomic failed with rc=%d (%s)", rc, fi_strerror(-rc))); MCA_BTL_OFI_ABORT(); } @@ -181,8 +185,10 @@ int mca_btl_ofi_acswap (struct mca_btl_base_module_t *btl, struct mca_btl_base_e &comp->comp_ctx); if (rc == -FI_EAGAIN) { + opal_free_list_return(comp->base.my_list, (opal_free_list_item_t*) comp); return OPAL_ERR_OUT_OF_RESOURCE; } else if (rc < 0) { + opal_free_list_return(comp->base.my_list, (opal_free_list_item_t*) comp); BTL_ERROR(("fi_compare_atomic failed with rc=%d (%s)", rc, fi_strerror(-rc))); MCA_BTL_OFI_ABORT(); } diff --git a/opal/mca/btl/ofi/btl_ofi_rdma.c b/opal/mca/btl/ofi/btl_ofi_rdma.c index 0ecbd887bc1..f2728e36dc0 100644 --- a/opal/mca/btl/ofi/btl_ofi_rdma.c +++ b/opal/mca/btl/ofi/btl_ofi_rdma.c @@ -88,10 +88,12 @@ int mca_btl_ofi_get (mca_btl_base_module_t *btl, mca_btl_base_endpoint_t *endpoi &comp->comp_ctx); /* completion context */ if (-FI_EAGAIN == rc) { + opal_free_list_return(comp->base.my_list, (opal_free_list_item_t*) comp); return OPAL_ERR_OUT_OF_RESOURCE; } if (0 != rc) { + opal_free_list_return(comp->base.my_list, (opal_free_list_item_t*) comp); BTL_ERROR(("fi_read failed with %d:%s", rc, fi_strerror(-rc))); MCA_BTL_OFI_ABORT(); } @@ -133,10 +135,12 @@ int mca_btl_ofi_put (mca_btl_base_module_t *btl, mca_btl_base_endpoint_t *endpoi &comp->comp_ctx); /* completion context */ if (-FI_EAGAIN == rc) { + opal_free_list_return(comp->base.my_list, (opal_free_list_item_t*) comp); return OPAL_ERR_OUT_OF_RESOURCE; } if (0 != rc) { + opal_free_list_return(comp->base.my_list, (opal_free_list_item_t*) comp); BTL_ERROR(("fi_write failed with %d:%s", rc, fi_strerror(-rc))); MCA_BTL_OFI_ABORT(); }