From cc51305342c3775296a8ce4c855b48b1bedeab45 Mon Sep 17 00:00:00 2001 From: Michel Lind Date: Sep 15 2023 17:46:03 +0000 Subject: Update to 4.1.4 (matching Fedora 38) for pmix 4.1.3 CVE fix Signed-off-by: Michel Lind --- diff --git a/.gitignore b/.gitignore index 5746d2b..7fb7c8c 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,4 @@ openmpi-1.4.1-RH.tar.bz2 /openmpi-4.0.5.tar.bz2 /openmpi-4.1.0.tar.bz2 /openmpi-4.1.1.tar.bz2 +/openmpi-4.1.4.tar.bz2 diff --git a/0001-Revert-ucx-check-supported-transports-and-devices-fo.patch b/0001-Revert-ucx-check-supported-transports-and-devices-fo.patch deleted file mode 100644 index 2871232..0000000 --- a/0001-Revert-ucx-check-supported-transports-and-devices-fo.patch +++ /dev/null @@ -1,367 +0,0 @@ -From 63c80c7692e55f634cbca6f67cc5c9cdef3a04d2 Mon Sep 17 00:00:00 2001 -From: Honggang Li -Date: Mon, 28 Jun 2021 21:38:13 +0800 -Subject: [PATCH] Revert "ucx: check supported transports and devices for - setting priority" - -This reverts commit c36d7459b6331c4da825cad5a64326e7c1a272aa. ---- - contrib/platform/mellanox/optimized.conf | 2 - - ompi/mca/pml/ucx/pml_ucx_component.c | 15 +- - opal/mca/common/ucx/common_ucx.c | 202 +---------------------- - opal/mca/common/ucx/common_ucx.h | 15 -- - opal/mca/common/ucx/configure.m4 | 2 - - 5 files changed, 2 insertions(+), 234 deletions(-) - -diff --git a/contrib/platform/mellanox/optimized.conf b/contrib/platform/mellanox/optimized.conf -index 543fd8d1e224..b86b37c9e2fa 100644 ---- a/contrib/platform/mellanox/optimized.conf -+++ b/contrib/platform/mellanox/optimized.conf -@@ -61,8 +61,6 @@ - coll = ^ml - hwloc_base_binding_policy = core - btl = self --pml_ucx_tls = any --pml_ucx_devices = any - # Basic behavior to smooth startup - mca_base_component_show_load_errors = 0 - orte_abort_timeout = 10 -diff --git a/ompi/mca/pml/ucx/pml_ucx_component.c b/ompi/mca/pml/ucx/pml_ucx_component.c -index 6aed6c41d11d..ed9cc6573e8e 100644 ---- a/ompi/mca/pml/ucx/pml_ucx_component.c -+++ b/ompi/mca/pml/ucx/pml_ucx_component.c -@@ -107,26 +107,13 @@ static mca_pml_base_module_t* - mca_pml_ucx_component_init(int* priority, bool enable_progress_threads, - bool enable_mpi_threads) - { -- opal_common_ucx_support_level_t support_level; - int ret; - -- support_level = opal_common_ucx_support_level(ompi_pml_ucx.ucp_context); -- if (support_level == OPAL_COMMON_UCX_SUPPORT_NONE) { -- return NULL; -- } -- - if ( (ret = mca_pml_ucx_init(enable_mpi_threads)) != 0) { - return NULL; - } - -- /* -- * If found supported devices - set to the configured (high) priority. -- * Otherwise - Found only supported transports (which could be exposed by -- * unsupported devices), so set a priority lower than ob1. -- */ -- *priority = (support_level == OPAL_COMMON_UCX_SUPPORT_DEVICE) ? -- ompi_pml_ucx.priority : 19; -- PML_UCX_VERBOSE(2, "returning priority %d", *priority); -+ *priority = ompi_pml_ucx.priority; - return &ompi_pml_ucx.super; - } - -diff --git a/opal/mca/common/ucx/common_ucx.c b/opal/mca/common/ucx/common_ucx.c -index ac7a17d799a5..ae8e66877ab6 100644 ---- a/opal/mca/common/ucx/common_ucx.c -+++ b/opal/mca/common/ucx/common_ucx.c -@@ -14,11 +14,8 @@ - #include "opal/mca/base/mca_base_framework.h" - #include "opal/mca/pmix/pmix.h" - #include "opal/memoryhooks/memory.h" --#include "opal/util/argv.h" - - #include --#include --#include - - /***********************************************************************/ - -@@ -28,8 +25,7 @@ opal_common_ucx_module_t opal_common_ucx = { - .verbose = 0, - .progress_iterations = 100, - .registered = 0, -- .opal_mem_hooks = 0, -- .tls = NULL -+ .opal_mem_hooks = 0 - }; - - static void opal_common_ucx_mem_release_cb(void *buf, size_t length, -@@ -40,15 +36,10 @@ static void opal_common_ucx_mem_release_cb(void *buf, size_t length, - - OPAL_DECLSPEC void opal_common_ucx_mca_var_register(const mca_base_component_t *component) - { -- static const char *default_tls = "rc_verbs,ud_verbs,rc_mlx5,dc_mlx5,cuda_ipc,rocm_ipc"; -- static const char *default_devices = "mlx*"; - static int registered = 0; - static int hook_index; - static int verbose_index; - static int progress_index; -- static int tls_index; -- static int devices_index; -- - if (!registered) { - verbose_index = mca_base_var_register("opal", "opal_common", "ucx", "verbose", - "Verbose level of the UCX components", -@@ -69,29 +60,6 @@ OPAL_DECLSPEC void opal_common_ucx_mca_var_register(const mca_base_component_t * - OPAL_INFO_LVL_3, - MCA_BASE_VAR_SCOPE_LOCAL, - &opal_common_ucx.opal_mem_hooks); -- -- opal_common_ucx.tls = malloc(sizeof(*opal_common_ucx.tls)); -- *opal_common_ucx.tls = strdup(default_tls); -- tls_index = mca_base_var_register("opal", "opal_common", "ucx", "tls", -- "List of UCX transports which should be supported on the system, to enable " -- "selecting the UCX component. Special values: any (any available). " -- "A '^' prefix negates the list. " -- "For example, in order to exclude on shared memory and TCP transports, " -- "please set to '^posix,sysv,self,tcp,cma,knem,xpmem'.", -- MCA_BASE_VAR_TYPE_STRING, NULL, 0, 0, -- OPAL_INFO_LVL_3, -- MCA_BASE_VAR_SCOPE_LOCAL, -- opal_common_ucx.tls); -- -- opal_common_ucx.devices = malloc(sizeof(*opal_common_ucx.devices)); -- *opal_common_ucx.devices = strdup(default_devices); -- devices_index = mca_base_var_register("opal", "opal_common", "ucx", "devices", -- "List of device driver pattern names, which, if supported by UCX, will " -- "bump its priority above ob1. Special values: any (any available)", -- MCA_BASE_VAR_TYPE_STRING, NULL, 0, 0, -- OPAL_INFO_LVL_3, -- MCA_BASE_VAR_SCOPE_LOCAL, -- opal_common_ucx.devices); - registered = 1; - } - if (component) { -@@ -107,14 +75,6 @@ OPAL_DECLSPEC void opal_common_ucx_mca_var_register(const mca_base_component_t * - component->mca_type_name, - component->mca_component_name, - "opal_mem_hooks", 0); -- mca_base_var_register_synonym(tls_index, component->mca_project_name, -- component->mca_type_name, -- component->mca_component_name, -- "tls", 0); -- mca_base_var_register_synonym(devices_index, component->mca_project_name, -- component->mca_type_name, -- component->mca_component_name, -- "devices", 0); - } - } - -@@ -163,166 +123,6 @@ OPAL_DECLSPEC void opal_common_ucx_mca_deregister(void) - opal_output_close(opal_common_ucx.output); - } - --#if HAVE_DECL_OPEN_MEMSTREAM --static bool opal_common_ucx_check_device(const char *device_name, char **device_list) --{ -- char sysfs_driver_link[PATH_MAX]; -- char driver_path[PATH_MAX]; -- char *ib_device_name; -- char *driver_name; -- char **list_item; -- ssize_t ret; -- -- /* mlx5_0:1 */ -- ret = sscanf(device_name, "%m[^:]%*d", &ib_device_name); -- if (ret != 1) { -- return false; -- } -- -- sysfs_driver_link[sizeof(sysfs_driver_link) - 1] = '\0'; -- snprintf(sysfs_driver_link, sizeof(sysfs_driver_link) - 1, -- "/sys/class/infiniband/%s/device/driver", ib_device_name); -- free(ib_device_name); -- -- driver_path[sizeof(driver_path) - 1] = '\0'; -- ret = readlink(sysfs_driver_link, driver_path, sizeof(driver_path) - 1); -- if (ret < 0) { -- MCA_COMMON_UCX_VERBOSE(2, "readlink(%s) failed: %s", sysfs_driver_link, -- strerror(errno)); -- return false; -- } -- -- driver_name = basename(driver_path); -- for (list_item = device_list; *list_item != NULL; ++list_item) { -- if (!fnmatch(*list_item, driver_name, 0)) { -- MCA_COMMON_UCX_VERBOSE(2, "driver '%s' matched by '%s'", -- driver_path, *list_item); -- return true; -- } -- } -- -- return false; --} --#endif -- --OPAL_DECLSPEC opal_common_ucx_support_level_t --opal_common_ucx_support_level(ucp_context_h context) --{ -- opal_common_ucx_support_level_t support_level = OPAL_COMMON_UCX_SUPPORT_NONE; -- static const char *support_level_names[] = { -- [OPAL_COMMON_UCX_SUPPORT_NONE] = "none", -- [OPAL_COMMON_UCX_SUPPORT_TRANSPORT] = "transports only", -- [OPAL_COMMON_UCX_SUPPORT_DEVICE] = "transports and devices" -- }; --#if HAVE_DECL_OPEN_MEMSTREAM -- char *rsc_tl_name, *rsc_device_name; -- char **tl_list, **device_list, **list_item; -- bool is_any_tl, is_any_device; -- bool found_tl, negate; -- char line[128]; -- FILE *stream; -- char *buffer; -- size_t size; -- int ret; --#endif -- -- is_any_tl = !strcmp(*opal_common_ucx.tls, "any"); -- is_any_device = !strcmp(*opal_common_ucx.devices, "any"); -- -- /* Check for special value "any" */ -- if (is_any_tl && is_any_device) { -- MCA_COMMON_UCX_VERBOSE(1, "ucx is enabled on any transport or device", -- *opal_common_ucx.tls); -- support_level = OPAL_COMMON_UCX_SUPPORT_DEVICE; -- goto out; -- } -- --#if HAVE_DECL_OPEN_MEMSTREAM -- /* Split transports list */ -- negate = ('^' == (*opal_common_ucx.tls)[0]); -- tl_list = opal_argv_split(*opal_common_ucx.tls + (negate ? 1 : 0), ','); -- if (tl_list == NULL) { -- MCA_COMMON_UCX_VERBOSE(1, "failed to split tl list '%s', ucx is disabled", -- *opal_common_ucx.tls); -- goto out; -- } -- -- /* Split devices list */ -- device_list = opal_argv_split(*opal_common_ucx.devices, ','); -- if (device_list == NULL) { -- MCA_COMMON_UCX_VERBOSE(1, "failed to split devices list '%s', ucx is disabled", -- *opal_common_ucx.devices); -- goto out_free_tl_list; -- } -- -- /* Open memory stream to dump UCX information to */ -- stream = open_memstream(&buffer, &size); -- if (stream == NULL) { -- MCA_COMMON_UCX_VERBOSE(1, "failed to open memory stream for ucx info (%s), " -- "ucx is disabled", strerror(errno)); -- goto out_free_device_list; -- } -- -- /* Print ucx transports information to the memory stream */ -- ucp_context_print_info(context, stream); -- -- /* Rewind and read transports/devices list from the stream */ -- fseek(stream, 0, SEEK_SET); -- while ((support_level != OPAL_COMMON_UCX_SUPPORT_DEVICE) && -- (fgets(line, sizeof(line), stream) != NULL)) { -- rsc_tl_name = NULL; -- ret = sscanf(line, -- /* "# resource 6 : md 5 dev 4 flags -- rc_verbs/mlx5_0:1" */ -- "# resource %*d : md %*d dev %*d flags -- %m[^/ \n\r]/%m[^/ \n\r]", -- &rsc_tl_name, &rsc_device_name); -- if (ret != 2) { -- free(rsc_tl_name); -- continue; -- } -- -- /* Check if 'rsc_tl_name' is found provided list */ -- found_tl = is_any_tl; -- for (list_item = tl_list; !found_tl && (*list_item != NULL); ++list_item) { -- found_tl = !strcmp(*list_item, rsc_tl_name); -- } -- -- /* Check if the transport has a match (either positive or negative) */ -- assert(!(is_any_tl && negate)); -- if (found_tl != negate) { -- if (is_any_device || -- opal_common_ucx_check_device(rsc_device_name, device_list)) { -- MCA_COMMON_UCX_VERBOSE(2, "%s/%s: matched both transport and device list", -- rsc_tl_name, rsc_device_name); -- support_level = OPAL_COMMON_UCX_SUPPORT_DEVICE; -- } else { -- MCA_COMMON_UCX_VERBOSE(2, "%s/%s: matched transport list but not device list", -- rsc_tl_name, rsc_device_name); -- support_level = OPAL_COMMON_UCX_SUPPORT_TRANSPORT; -- } -- } else { -- MCA_COMMON_UCX_VERBOSE(2, "%s/%s: did not match transport list", -- rsc_tl_name, rsc_device_name); -- } -- -- free(rsc_device_name); -- free(rsc_tl_name); -- } -- -- MCA_COMMON_UCX_VERBOSE(2, "support level is %s", support_level_names[support_level]); -- fclose(stream); -- free(buffer); -- --out_free_device_list: -- opal_argv_free(device_list); --out_free_tl_list: -- opal_argv_free(tl_list); --out: --#else -- MCA_COMMON_UCX_VERBOSE(2, "open_memstream() was not found, ucx is disabled"); --#endif -- return support_level; --} -- - void opal_common_ucx_empty_complete_cb(void *request, ucs_status_t status) - { - } -diff --git a/opal/mca/common/ucx/common_ucx.h b/opal/mca/common/ucx/common_ucx.h -index 92cdd738ef98..202131ac8907 100644 ---- a/opal/mca/common/ucx/common_ucx.h -+++ b/opal/mca/common/ucx/common_ucx.h -@@ -88,8 +88,6 @@ typedef struct opal_common_ucx_module { - int progress_iterations; - int registered; - bool opal_mem_hooks; -- char **tls; -- char **devices; - } opal_common_ucx_module_t; - - typedef struct opal_common_ucx_del_proc { -@@ -97,23 +95,10 @@ typedef struct opal_common_ucx_del_proc { - size_t vpid; - } opal_common_ucx_del_proc_t; - --typedef enum { -- /* No supported transports found (according to configured list of supported -- transports) */ -- OPAL_COMMON_UCX_SUPPORT_NONE, -- -- /* Have supported transports but not supported devices */ -- OPAL_COMMON_UCX_SUPPORT_TRANSPORT, -- -- /* Have both supported transports and supported devices */ -- OPAL_COMMON_UCX_SUPPORT_DEVICE, --} opal_common_ucx_support_level_t; -- - extern opal_common_ucx_module_t opal_common_ucx; - - OPAL_DECLSPEC void opal_common_ucx_mca_register(void); - OPAL_DECLSPEC void opal_common_ucx_mca_deregister(void); --OPAL_DECLSPEC opal_common_ucx_support_level_t opal_common_ucx_support_level(ucp_context_h context); - OPAL_DECLSPEC void opal_common_ucx_mca_proc_added(void); - OPAL_DECLSPEC void opal_common_ucx_empty_complete_cb(void *request, ucs_status_t status); - OPAL_DECLSPEC int opal_common_ucx_mca_pmix_fence(ucp_worker_h worker); -diff --git a/opal/mca/common/ucx/configure.m4 b/opal/mca/common/ucx/configure.m4 -index af8628a889c6..27e07c2005b2 100644 ---- a/opal/mca/common/ucx/configure.m4 -+++ b/opal/mca/common/ucx/configure.m4 -@@ -18,8 +18,6 @@ AC_DEFUN([MCA_opal_common_ucx_CONFIG],[ - [common_ucx_happy="yes"], - [common_ucx_happy="no"]) - -- AC_CHECK_DECLS([open_memstream], [], [], [[#include ]]) -- - AS_IF([test "$common_ucx_happy" = "yes"], - [$1], - [$2]) --- -2.31.1 - diff --git a/266189935aef4fce825d0db831b4b53accc62c32.patch b/266189935aef4fce825d0db831b4b53accc62c32.patch deleted file mode 100644 index ac960e4..0000000 --- a/266189935aef4fce825d0db831b4b53accc62c32.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 266189935aef4fce825d0db831b4b53accc62c32 Mon Sep 17 00:00:00 2001 -From: Jeff Squyres -Date: Tue, 22 Jun 2021 22:28:37 -0400 -Subject: [PATCH] fbtl-posix: link to common_ompio - -The posix fbtl calls mca_common_ompio_progress(), which resides in -common/ompio (i.e., libmca_common_ompio.la). So add that into -mca_fbtl_posix_la_LIBADD (like we do in a few other OMPIO-based -components). Failure to do this *can* lead to the posix fbtl -component failing to load (depending on whether other OMPIO-based -components that pull in libmca_common_ompio were loaded first). - -Thanks to Honggang Li for raising the issue. - -Signed-off-by: Jeff Squyres ---- - ompi/mca/fbtl/posix/Makefile.am | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/ompi/mca/fbtl/posix/Makefile.am b/ompi/mca/fbtl/posix/Makefile.am -index a7b0624d3ec..1ce19cb09b7 100644 ---- a/ompi/mca/fbtl/posix/Makefile.am -+++ b/ompi/mca/fbtl/posix/Makefile.am -@@ -34,7 +34,8 @@ mcacomponentdir = $(ompilibdir) - mcacomponent_LTLIBRARIES = $(component_install) - mca_fbtl_posix_la_SOURCES = $(sources) - mca_fbtl_posix_la_LDFLAGS = -module -avoid-version --mca_fbtl_posix_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la -+mca_fbtl_posix_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ -+ $(OMPI_TOP_BUILDDIR)/ompi/mca/common/ompio/libmca_common_ompio.la - - noinst_LTLIBRARIES = $(component_noinst) - libmca_fbtl_posix_la_SOURCES = $(sources) diff --git a/openmpi.spec b/openmpi.spec index 17dbcdf..e27fc04 100644 --- a/openmpi.spec +++ b/openmpi.spec @@ -5,6 +5,9 @@ %global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) +# guard against unexpected ABI breakage +%global pmix_version 4.1.3 + %if 0%{?fedora} >= 32 || 0%{?rhel} >= 8 %bcond_with python2 %else @@ -30,8 +33,8 @@ Name: openmpi%{?_cc_name_suffix} Epoch: 2 -Version: 4.1.1 -Release: 7%{?dist} +Version: 4.1.4 +Release: 1.1%{?dist} Summary: Open Message Passing Interface License: BSD and MIT and Romio URL: http://www.open-mpi.org/ @@ -42,8 +45,6 @@ Source1: openmpi.module.in Source2: openmpi.pth.py2 Source3: openmpi.pth.py3 Source4: macros.openmpi -Patch1: 266189935aef4fce825d0db831b4b53accc62c32.patch -Patch2: 0001-Revert-ucx-check-supported-transports-and-devices-fo.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -77,7 +78,7 @@ BuildRequires: papi-devel BuildRequires: perl-generators BuildRequires: perl-interpreter BuildRequires: perl(Getopt::Long) -BuildRequires: pmix-devel +BuildRequires: pmix-devel = %{pmix_version} BuildRequires: python%{python3_pkgversion}-devel %ifarch x86_64 BuildRequires: libpsm2-devel @@ -99,6 +100,7 @@ Requires: environment(modules) # openmpi currently requires ssh to run # https://svn.open-mpi.org/trac/ompi/ticket/4228 Requires: openssh-clients +Requires: pmix = %{pmix_version} # Private openmpi libraries %global __provides_exclude_from %{_libdir}/openmpi/lib/(lib(mca|ompi|open-(pal|rte|trace))|openmpi/).*.so @@ -358,6 +360,9 @@ make check %changelog +* Fri Sep 15 2023 Michel Lind - 2:4.1.4-1.1 +- Update to 4.1.4 (matching Fedora 38) for pmix 4.1.3 CVE fix + * Fri Jul 21 2023 Kamal Heib - 2:4.1.1-7 - Increase Epoch tag - Resolves: rhbz#2159637, rhbz#2218121, rhbz#2216042 diff --git a/sources b/sources index cc0a735..4df47e3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (openmpi-4.1.1.tar.bz2) = 0d85ba45a40c0879f266e5286615e2cf94eb3570f0a705194525821d5c85d460cefc3a2da8207e6e84c479d3d0da656e2342cc2d6f88c4b4577ca22bbeacc89d +SHA512 (openmpi-4.1.4.tar.bz2) = c70a92c9b16b8c76a871183f9b180d60861186e64140da897d206d53bc06213f31ea93b31734645f580f4bf28dda5605d85dbce2417e4596955384d961bed653