From 09e67ce4fd985bcd8fc8506a5f3e6fa31b54924c Mon Sep 17 00:00:00 2001 From: Galen Shipman Date: Tue, 27 Sep 2005 18:10:44 +0000 Subject: [PATCH] fix off by one on up_align_addr, use base and bound instead of base_align and bound_align.. This commit was SVN r7521. --- ompi/mca/mpool/base/base.h | 2 +- ompi/mca/mpool/base/mpool_base_mem_cb.c | 4 ++++ ompi/mca/mpool/gm/mpool_gm_module.c | 8 +++----- ompi/mca/mpool/mpool.h | 2 -- ompi/mca/mpool/mvapi/mpool_mvapi_component.c | 2 -- ompi/mca/mpool/mvapi/mpool_mvapi_module.c | 8 +++----- ompi/mca/mpool/openib/mpool_openib_module.c | 11 ++++------- ompi/mca/rcache/rb/rcache_rb.c | 6 +++--- ompi/mca/rcache/rb/rcache_rb_tree.c | 8 ++++---- 9 files changed, 22 insertions(+), 29 deletions(-) diff --git a/ompi/mca/mpool/base/base.h b/ompi/mca/mpool/base/base.h index 2b8ee34dc1..ceb2b44a6e 100644 --- a/ompi/mca/mpool/base/base.h +++ b/ompi/mca/mpool/base/base.h @@ -44,7 +44,7 @@ static inline void *down_align_addr(void* addr, unsigned int shift) { } static inline void *up_align_addr(void*addr, unsigned int shift) { - return (void*) ((((unsigned long) addr) | ~((~(unsigned long) 0) << shift)) + 1); + return (void*) ((((unsigned long) addr) | ~((~(unsigned long) 0) << shift))); } struct mca_mpool_base_selected_module_t { diff --git a/ompi/mca/mpool/base/mpool_base_mem_cb.c b/ompi/mca/mpool/base/mpool_base_mem_cb.c index b67e52050a..2802d69c68 100644 --- a/ompi/mca/mpool/base/mpool_base_mem_cb.c +++ b/ompi/mca/mpool/base/mpool_base_mem_cb.c @@ -36,6 +36,10 @@ void mca_mpool_base_mem_cb(void* base, size_t size, void* cbdata) opal_list_item_t* item; void* base_addr; void* bound_addr; + if(size == 0) { + return; + } + base_addr = down_align_addr( base, mca_mpool_base_page_size_log); bound_addr = up_align_addr((void*) ((unsigned long) base + size - 1), mca_mpool_base_page_size_log); OBJ_CONSTRUCT(®s, ompi_pointer_array_t); diff --git a/ompi/mca/mpool/gm/mpool_gm_module.c b/ompi/mca/mpool/gm/mpool_gm_module.c index 60adafab97..d01957b78d 100644 --- a/ompi/mca/mpool/gm/mpool_gm_module.c +++ b/ompi/mca/mpool/gm/mpool_gm_module.c @@ -92,12 +92,10 @@ int mca_mpool_gm_register( return OMPI_ERR_OUT_OF_RESOURCE; } reg->mpool = mpool; - reg->base = addr; + reg->base = down_align_addr(addr, mca_mpool_base_page_size_log); reg->flags = flags; - reg->bound = reg->base + size - 1; - reg->base_align = down_align_addr(addr, mca_mpool_base_page_size_log); - reg->bound_align = up_align_addr(reg->bound - , mca_mpool_base_page_size_log); + reg->bound = up_align_addr(reg->base + size -1 + , mca_mpool_base_page_size_log); OPAL_THREAD_ADD32(®->ref_count,1); diff --git a/ompi/mca/mpool/mpool.h b/ompi/mca/mpool/mpool.h index b09e2cb73c..7d0499419f 100644 --- a/ompi/mca/mpool/mpool.h +++ b/ompi/mca/mpool/mpool.h @@ -36,8 +36,6 @@ struct mca_mpool_base_registration_t { unsigned char* base; unsigned char* bound; unsigned char* alloc_base; - unsigned char* base_align; - unsigned char* bound_align; void* user_data; uint32_t ref_count; uint32_t flags; diff --git a/ompi/mca/mpool/mvapi/mpool_mvapi_component.c b/ompi/mca/mpool/mvapi/mpool_mvapi_component.c index 651e111f14..f225fa2dfd 100644 --- a/ompi/mca/mpool/mvapi/mpool_mvapi_component.c +++ b/ompi/mca/mpool/mvapi/mpool_mvapi_component.c @@ -65,8 +65,6 @@ static void mca_mpool_mvapi_registration_constructor( mca_mpool_mvapi_registrati { registration->base_reg.base = NULL; registration->base_reg.bound = NULL; - registration->base_reg.base_align = NULL; - registration->base_reg.bound_align = NULL; registration->base_reg.flags = 0; } diff --git a/ompi/mca/mpool/mvapi/mpool_mvapi_module.c b/ompi/mca/mpool/mvapi/mpool_mvapi_module.c index 6a9bb1ed96..4cd3aefcf6 100644 --- a/ompi/mca/mpool/mvapi/mpool_mvapi_module.c +++ b/ompi/mca/mpool/mvapi/mpool_mvapi_module.c @@ -126,13 +126,11 @@ int mca_mpool_mvapi_register( vapi_reg->l_key = mr_out.l_key; vapi_reg->r_key = mr_out.r_key; - vapi_reg->base_reg.base = addr; - vapi_reg->base_reg.bound = (unsigned char*) (unsigned long) addr + size - 1; - vapi_reg->base_reg.base_align = down_align_addr(addr, mca_mpool_base_page_size_log); - vapi_reg->base_reg.bound_align = up_align_addr(vapi_reg->base_reg.bound + vapi_reg->base_reg.base = down_align_addr(addr, mca_mpool_base_page_size_log); + vapi_reg->base_reg.bound = up_align_addr((void*) ((unsigned long) addr + size - 1) , mca_mpool_base_page_size_log); - assert(vapi_reg->base_reg.bound - vapi_reg->base_reg.base > 0); + assert(vapi_reg->base_reg.bound - vapi_reg->base_reg.base >= 0); if(flags & (MCA_MPOOL_FLAGS_CACHE | MCA_MPOOL_FLAGS_PERSIST)) { mpool->rcache->rcache_insert(mpool->rcache, diff --git a/ompi/mca/mpool/openib/mpool_openib_module.c b/ompi/mca/mpool/openib/mpool_openib_module.c index eb4389de6d..2a36ad53eb 100644 --- a/ompi/mca/mpool/openib/mpool_openib_module.c +++ b/ompi/mca/mpool/openib/mpool_openib_module.c @@ -103,13 +103,10 @@ int mca_mpool_openib_register(mca_mpool_base_module_t* mpool, return OMPI_ERROR; } - vapi_reg->base_reg.base = addr; - vapi_reg->base_reg.bound = (void*) ((char*) addr + size - 1); - vapi_reg->base_reg.base_align = down_align_addr(addr, mca_mpool_base_page_size_log); - vapi_reg->base_reg.bound_align = up_align_addr(vapi_reg->base_reg.bound - , mca_mpool_base_page_size_log); - - + vapi_reg->base_reg.base = down_align_addr(addr, mca_mpool_base_page_size_log); + vapi_reg->base_reg.bound = up_align_addr( (void*) ((char*) addr + size - 1) + , mca_mpool_base_page_size_log); + if(flags & (MCA_MPOOL_FLAGS_CACHE | MCA_MPOOL_FLAGS_PERSIST)) { mpool->rcache->rcache_insert(mpool->rcache, (mca_mpool_base_registration_t*) vapi_reg, diff --git a/ompi/mca/rcache/rb/rcache_rb.c b/ompi/mca/rcache/rb/rcache_rb.c index c286ce3141..4179b4997d 100644 --- a/ompi/mca/rcache/rb/rcache_rb.c +++ b/ompi/mca/rcache/rb/rcache_rb.c @@ -75,9 +75,9 @@ int mca_rcache_rb_find ( if(rc == OMPI_SUCCESS) { *cnt = 1; } - assert(tree_item->reg->bound - tree_item->reg->base > 0); - assert(((void*) tree_item->reg->base_align) <= addr); - assert(((void*) tree_item->reg->bound_align) >= addr); + assert(tree_item->reg->bound - tree_item->reg->base >= 0); + assert(((void*) tree_item->reg->base) <= addr); + assert(((void*) tree_item->reg->bound) >= addr); return rc; } diff --git a/ompi/mca/rcache/rb/rcache_rb_tree.c b/ompi/mca/rcache/rb/rcache_rb_tree.c index 0fd622d65d..546fab16ef 100644 --- a/ompi/mca/rcache/rb/rcache_rb_tree.c +++ b/ompi/mca/rcache/rb/rcache_rb_tree.c @@ -60,8 +60,8 @@ struct mca_rcache_rb_tree_item_t * mca_rcache_rb_tree_find( ompi_rb_tree_find(&rcache->rb_tree, &key); if(NULL != found ) { - if((void*) found->reg->base_align > base || - (void*) found->reg->bound_align < base){ + if((void*) found->reg->base > base || + (void*) found->reg->bound < base){ assert(0); } } @@ -116,8 +116,8 @@ int mca_rcache_rb_tree_insert( return rc; rb_tree_item = (mca_rcache_rb_tree_item_t*) item; - rb_tree_item->key.base = reg->base_align; - rb_tree_item->key.bound = reg->bound_align; + rb_tree_item->key.base = reg->base; + rb_tree_item->key.bound = reg->bound; rb_tree_item->reg = reg; rc = ompi_rb_tree_insert(&rb_module->rb_tree,