From bcf46249a873aa2b664f921d3386223a650adb2f Mon Sep 17 00:00:00 2001 From: Joseph Moore <26410038+jgmoore-or@users.noreply.github.com> Date: Mon, 9 Mar 2026 11:46:04 -0600 Subject: [PATCH 1/2] DAOS-18614 cart: Fix UCX provider init for re-init of daos client. (#17593) Signed-off-by: Joseph Moore --- src/cart/crt_init.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/cart/crt_init.c b/src/cart/crt_init.c index cefd97666ed..dfe8c84c37b 100644 --- a/src/cart/crt_init.c +++ b/src/cart/crt_init.c @@ -499,8 +499,13 @@ crt_str_to_provider(const char *str_provider) if (len > strlen(CRT_UCX_STR) && strchr(str_provider, '+')) { D_STRNDUP(p, str_provider, len); if (!p) { + /* Return provider unknown if allocation fails. */ return prov; } else { + /* Store the default UCX provider string in the alt_str + * to allow it to be restored if finalize is called. + */ + crt_na_dict[i].nad_alt_str = crt_na_dict[i].nad_str; crt_na_dict[i].nad_str = p; crt_na_dict[i].nad_str_alloc = true; } @@ -1071,8 +1076,12 @@ crt_finalize(void) } for (i = 0; crt_na_dict[i].nad_str != NULL; i++) - if (crt_na_dict[i].nad_str_alloc) + if (crt_na_dict[i].nad_str_alloc) { D_FREE(crt_na_dict[i].nad_str); + crt_na_dict[i].nad_str = crt_na_dict[i].nad_alt_str; + crt_na_dict[i].nad_alt_str = NULL; + crt_na_dict[i].nad_str_alloc = false; + } D_FREE(crt_gdata.cg_secondary_provs); D_FREE(crt_gdata.cg_prov_gdata_secondary); From 1fd7e2103f7980a73120e09580452186daa22368 Mon Sep 17 00:00:00 2001 From: Joseph Moore <26410038+jgmoore-or@users.noreply.github.com> Date: Mon, 9 Mar 2026 11:46:04 -0600 Subject: [PATCH 2/2] DAOS-18614 cart: Fix UCX provider init for re-init of daos client. (#17593) Signed-off-by: Joseph Moore