ob1 does not check the return code of mpool_register. This can cause the
ob1 dummy registration to actually be used when using udreg. Fix this by always setting reg to NULL when mpool/udreg's register function fails. cmr=v1.7.4:reviewer=rhc This commit was SVN r30214.
Этот коммит содержится в:
родитель
c44a1027d0
Коммит
52c231df3e
@ -14,7 +14,7 @@
|
|||||||
* Copyright (c) 2006 Voltaire. All rights reserved.
|
* Copyright (c) 2006 Voltaire. All rights reserved.
|
||||||
* Copyright (c) 2007 Mellanox Technologies. All rights reserved.
|
* Copyright (c) 2007 Mellanox Technologies. All rights reserved.
|
||||||
* Copyright (c) 2010 IBM Corporation. All rights reserved.
|
* Copyright (c) 2010 IBM Corporation. All rights reserved.
|
||||||
* Copyright (c) 2011-2013 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2011-2014 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
*
|
*
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
@ -358,7 +358,8 @@ int mca_mpool_udreg_register(mca_mpool_base_module_t *mpool, void *addr,
|
|||||||
(urc = UDREG_Register (mpool_udreg->udreg_handle, addr, size, &udreg_entry))) {
|
(urc = UDREG_Register (mpool_udreg->udreg_handle, addr, size, &udreg_entry))) {
|
||||||
/* try to remove one unused reg and retry */
|
/* try to remove one unused reg and retry */
|
||||||
if (!mca_mpool_udreg_evict (mpool)) {
|
if (!mca_mpool_udreg_evict (mpool)) {
|
||||||
break;
|
*reg = NULL;
|
||||||
|
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -369,16 +370,13 @@ int mca_mpool_udreg_register(mca_mpool_base_module_t *mpool, void *addr,
|
|||||||
while (NULL == (udreg_reg = mca_mpool_udreg_reg_func (addr, size, mpool))) {
|
while (NULL == (udreg_reg = mca_mpool_udreg_reg_func (addr, size, mpool))) {
|
||||||
/* try to remove one unused reg and retry */
|
/* try to remove one unused reg and retry */
|
||||||
if (!mca_mpool_udreg_evict (mpool)) {
|
if (!mca_mpool_udreg_evict (mpool)) {
|
||||||
break;
|
*reg = NULL;
|
||||||
|
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
udreg_reg->mpool_context = NULL;
|
udreg_reg->mpool_context = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NULL == udreg_reg) {
|
|
||||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
|
||||||
}
|
|
||||||
|
|
||||||
udreg_reg->flags = flags;
|
udreg_reg->flags = flags;
|
||||||
|
|
||||||
*reg = udreg_reg;
|
*reg = udreg_reg;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user