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) 2007 Mellanox Technologies. 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.
|
||||
*
|
||||
* $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))) {
|
||||
/* try to remove one unused reg and retry */
|
||||
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))) {
|
||||
/* try to remove one unused reg and retry */
|
||||
if (!mca_mpool_udreg_evict (mpool)) {
|
||||
break;
|
||||
*reg = NULL;
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
}
|
||||
udreg_reg->mpool_context = NULL;
|
||||
}
|
||||
|
||||
if (NULL == udreg_reg) {
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
udreg_reg->flags = flags;
|
||||
|
||||
*reg = udreg_reg;
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user