diff --git a/opal/mca/btl/openib/btl_openib_component.c b/opal/mca/btl/openib/btl_openib_component.c index e2e0309464..5c6a35b7b0 100644 --- a/opal/mca/btl/openib/btl_openib_component.c +++ b/opal/mca/btl/openib/btl_openib_component.c @@ -265,6 +265,17 @@ static int btl_openib_component_close(void) opal_btl_openib_fd_finalize(); opal_btl_openib_ini_finalize(); + if (NULL != mca_btl_openib_component.receive_queues + && BTL_OPENIB_RQ_SOURCE_DEFAULT == + mca_btl_openib_component.receive_queues_source) { + /* + * In that case, the string has not been duplicated during variable + * registration. So it won't be freed by the mca_base_var system. + * Free it here. + */ + free(mca_btl_openib_component.receive_queues); + } + if (NULL != mca_btl_openib_component.default_recv_qps) { free(mca_btl_openib_component.default_recv_qps); } diff --git a/opal/mca/btl/openib/btl_openib_mca.c b/opal/mca/btl/openib/btl_openib_mca.c index 0550478b2a..bb6b08c388 100644 --- a/opal/mca/btl/openib/btl_openib_mca.c +++ b/opal/mca/btl/openib/btl_openib_mca.c @@ -661,12 +661,14 @@ int btl_openib_register_mca_params(void) mca_btl_openib_component.default_recv_qps = default_qps; CHECK(reg_string("receive_queues", NULL, "Colon-delimited, comma-delimited list of receive queues: P,4096,8,6,4:P,32768,8,6,4", - default_qps, &mca_btl_openib_component.receive_queues, + NULL, &mca_btl_openib_component.receive_queues, 0)); - mca_btl_openib_component.receive_queues_source = - (0 == strcmp(default_qps, - mca_btl_openib_component.receive_queues)) ? - BTL_OPENIB_RQ_SOURCE_DEFAULT : BTL_OPENIB_RQ_SOURCE_MCA; + if (NULL == mca_btl_openib_component.receive_queues) { + mca_btl_openib_component.receive_queues = strdup(default_qps); + mca_btl_openib_component.receive_queues_source = BTL_OPENIB_RQ_SOURCE_DEFAULT; + } else { + mca_btl_openib_component.receive_queues_source = BTL_OPENIB_RQ_SOURCE_MCA; + } CHECK(reg_string("if_include", NULL, "Comma-delimited list of devices/ports to be used (e.g. \"mthca0,mthca1:2\"; empty value means to use all ports found). Mutually exclusive with btl_openib_if_exclude.",