diff --git a/ompi/mca/btl/tcp/btl_tcp.c b/ompi/mca/btl/tcp/btl_tcp.c index 251cc33e7e..74b56f7c9e 100644 --- a/ompi/mca/btl/tcp/btl_tcp.c +++ b/ompi/mca/btl/tcp/btl_tcp.c @@ -175,19 +175,19 @@ mca_btl_base_descriptor_t* mca_btl_tcp_alloc( size_t size, uint32_t flags) { - mca_btl_tcp_frag_t* frag; + mca_btl_tcp_frag_t* frag = NULL; int rc; if(size <= btl->btl_eager_limit) { MCA_BTL_TCP_FRAG_ALLOC_EAGER(frag, rc); - frag->segments[0].seg_len = size; } else if (size <= btl->btl_max_send_size) { MCA_BTL_TCP_FRAG_ALLOC_MAX(frag, rc); - frag->segments[0].seg_len = size; - } else { + } + if( OPAL_UNLIKELY(NULL == frag) ) { return NULL; } + frag->segments[0].seg_len = size; frag->segments[0].seg_addr.pval = frag+1; frag->base.des_src = frag->segments; diff --git a/ompi/mca/btl/tcp/btl_tcp_frag.h b/ompi/mca/btl/tcp/btl_tcp_frag.h index f16a835b60..ded6b459e5 100644 --- a/ompi/mca/btl/tcp/btl_tcp_frag.h +++ b/ompi/mca/btl/tcp/btl_tcp_frag.h @@ -2,7 +2,7 @@ * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana * University Research and Technology * Corporation. All rights reserved. - * Copyright (c) 2004-2006 The University of Tennessee and The University + * Copyright (c) 2004-2008 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, @@ -82,24 +82,22 @@ OBJ_CLASS_DECLARATION(mca_btl_tcp_frag_user_t); #define MCA_BTL_TCP_FRAG_ALLOC_EAGER(frag, rc) \ { \ - \ ompi_free_list_item_t *item; \ - OMPI_FREE_LIST_WAIT(&mca_btl_tcp_component.tcp_frag_eager, item, rc); \ + OMPI_FREE_LIST_GET(&mca_btl_tcp_component.tcp_frag_eager, item, rc); \ frag = (mca_btl_tcp_frag_t*) item; \ } #define MCA_BTL_TCP_FRAG_ALLOC_MAX(frag, rc) \ { \ - \ ompi_free_list_item_t *item; \ - OMPI_FREE_LIST_WAIT(&mca_btl_tcp_component.tcp_frag_max, item, rc); \ + OMPI_FREE_LIST_GET(&mca_btl_tcp_component.tcp_frag_max, item, rc); \ frag = (mca_btl_tcp_frag_t*) item; \ } #define MCA_BTL_TCP_FRAG_ALLOC_USER(frag, rc) \ { \ ompi_free_list_item_t *item; \ - OMPI_FREE_LIST_WAIT(&mca_btl_tcp_component.tcp_frag_user, item, rc); \ + OMPI_FREE_LIST_GET(&mca_btl_tcp_component.tcp_frag_user, item, rc); \ frag = (mca_btl_tcp_frag_t*) item; \ }