Hello community, here is the log from the commit of package mvapich2 for openSUSE:Factory checked in at 2019-08-05 10:40:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mvapich2 (Old) and /work/SRC/openSUSE:Factory/.mvapich2.new.4126 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mvapich2" Mon Aug 5 10:40:30 2019 rev:18 rq:720594 version:2.3.1 Changes: -------- --- /work/SRC/openSUSE:Factory/mvapich2/mvapich2.changes 2019-06-04 12:14:16.903783629 +0200 +++ /work/SRC/openSUSE:Factory/.mvapich2.new.4126/mvapich2.changes 2019-08-05 10:41:02.827301142 +0200 @@ -1,0 +2,7 @@ +Fri Aug 2 08:56:21 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemar...@suse.com> + +- Add mvapich2-make-sure-ibv_get_device_list-returned-one-before-freeing-it.patch + to Fix segfault when ib_uverbs is not loaded (bsc#1144000) + + +------------------------------------------------------------------- New: ---- mvapich2-make-sure-ibv_get_device_list-returned-one-before-freeing-it.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mvapich2.spec ++++++ --- /var/tmp/diff_new_pack.yw86ao/_old 2019-08-05 10:41:03.679301044 +0200 +++ /var/tmp/diff_new_pack.yw86ao/_new 2019-08-05 10:41:03.679301044 +0200 @@ -168,6 +168,7 @@ # It's been merged upstream, should be removed with the next release Patch3: 0001-Drop-GCC-check.patch Patch4: reproducible.patch +Patch5: mvapich2-make-sure-ibv_get_device_list-returned-one-before-freeing-it.patch Url: http://mvapich.cse.ohio-state.edu/overview/mvapich2/ BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -299,6 +300,7 @@ %patch2 %patch3 %patch4 -p1 +%patch5 cp /usr/share/automake*/config.* . %build ++++++ mvapich2-make-sure-ibv_get_device_list-returned-one-before-freeing-it.patch ++++++ commit a99fe07d76f518d8ce98752e3251e1c6d601ca7f Author: Nicolas Morey-Chaisemartin <nmoreychaisemar...@suse.com> Date: Fri Aug 2 10:53:11 2019 +0200 mvapich2: make sure ibv_get_device_list returned one before freeing it Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemar...@suse.com> diff --git src/mpid/ch3/channels/common/src/detect/hca/mv2_hca_detect.c src/mpid/ch3/channels/common/src/detect/hca/mv2_hca_detect.c index 8a6f06bb43a1..0eaab4a30804 100644 --- src/mpid/ch3/channels/common/src/detect/hca/mv2_hca_detect.c +++ src/mpid/ch3/channels/common/src/detect/hca/mv2_hca_detect.c @@ -632,7 +632,8 @@ mv2_multirail_info_type mv2_get_multirail_info() g_mv2_multirail_info = mv2_num_rail_unknown; break; } - ibv_free_device_list(dev_list); + if(dev_list) + ibv_free_device_list(dev_list); } return g_mv2_multirail_info; } diff --git src/mpid/ch3/channels/mrail/src/gen2/ibv_param.c src/mpid/ch3/channels/mrail/src/gen2/ibv_param.c index 0634d4ae48d2..6414bc0b76b8 100644 --- src/mpid/ch3/channels/mrail/src/gen2/ibv_param.c +++ src/mpid/ch3/channels/mrail/src/gen2/ibv_param.c @@ -572,7 +572,8 @@ int rdma_get_process_to_rail_mapping(int mrail_user_defined_p2r_type) } fn_exit: /* Housekeeping operations */ - ibv_free_device_list(dev_list); + if (dev_list) + ibv_free_device_list(dev_list); MPIU_Free(p2r_only_numbers); MPIU_Free(mrail_p2r_string); mrail_p2r_string = NULL; diff --git src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c index 89bf75ef49ab..4d97eb107be6 100644 --- src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c +++ src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c @@ -387,7 +387,8 @@ int rdma_find_network_type(struct ibv_device **dev_list, int num_devices, *num_usable_hcas = num_unknwn_cards; } - ibv_free_device_list(dev_list); + if (dev_list) + ibv_free_device_list(dev_list); return network_type; } @@ -514,7 +515,8 @@ int ring_rdma_open_hca(struct mv2_MPIDI_CH3I_RDMA_Process_t *proc) fn_exit: /* Clean up before exit */ - ibv_free_device_list(dev_list); + if (dev_list) + ibv_free_device_list(dev_list); return is_device_opened; } @@ -614,7 +616,8 @@ retry_hca_open: if (!ib_dev) { /* Clean up before exit */ - ibv_free_device_list(dev_list); + if (dev_list) + ibv_free_device_list(dev_list); MPIR_ERR_SETFATALANDJUMP1(mpi_errno, MPI_ERR_OTHER, "**fail", "**fail %s", "No IB device found"); } @@ -624,7 +627,8 @@ retry_hca_open: proc->nic_context[rdma_num_hcas] = ibv_open_device(ib_dev); if (!proc->nic_context[rdma_num_hcas]) { /* Clean up before exit */ - ibv_free_device_list(dev_list); + if (dev_list) + ibv_free_device_list(dev_list); MPIR_ERR_SETFATALANDJUMP2(mpi_errno, MPI_ERR_OTHER, "**fail", "%s %d", "Failed to open HCA number", rdma_num_hcas); @@ -641,7 +645,8 @@ retry_hca_open: ibv_alloc_pd(proc->nic_context[rdma_num_hcas]); if (!proc->ptag[rdma_num_hcas]) { /* Clean up before exit */ - ibv_free_device_list(dev_list); + if (dev_list) + ibv_free_device_list(dev_list); MPIR_ERR_SETFATALANDJUMP2(mpi_errno, MPI_ERR_OTHER, "**fail", "%s%d", "Failed to alloc pd number ", @@ -672,7 +677,8 @@ retry_hca_open: fn_exit: /* Clean up before exit */ - ibv_free_device_list(dev_list); + if (dev_list) + ibv_free_device_list(dev_list); return mpi_errno; fn_fail: diff --git src/mpid/ch3/channels/mrail/src/gen2/sysreport.c src/mpid/ch3/channels/mrail/src/gen2/sysreport.c index c4754ada2e7b..e427925bf996 100644 --- src/mpid/ch3/channels/mrail/src/gen2/sysreport.c +++ src/mpid/ch3/channels/mrail/src/gen2/sysreport.c @@ -111,7 +111,8 @@ static int hca_check(int rank) { */ } - ibv_free_device_list(dev_list); + if (dev_list) + ibv_free_device_list(dev_list); return mpi_errno; } diff --git src/mpid/ch3/channels/mrail/src/rdma/ibv_sharp.c src/mpid/ch3/channels/mrail/src/rdma/ibv_sharp.c index e023a9239a39..110f92e2eddf 100644 --- src/mpid/ch3/channels/mrail/src/rdma/ibv_sharp.c +++ src/mpid/ch3/channels/mrail/src/rdma/ibv_sharp.c @@ -281,7 +281,8 @@ finished_query: MPIR_ERR_POP(mpi_errno); } - ibv_free_device_list(dev_list); + if (dev_list) + ibv_free_device_list(dev_list); return 0; #else PRINT_ERROR( "Unable to get the device name, please set MV2_SHARP_HCA_NAME and MV2_SHARP_PORT, then rerun the program. "); diff --git src/mpid/ch3/channels/psm/src/psm_entry.c src/mpid/ch3/channels/psm/src/psm_entry.c index 09220e66b7f1..1e5b29e3104c 100755 --- src/mpid/ch3/channels/psm/src/psm_entry.c +++ src/mpid/ch3/channels/psm/src/psm_entry.c @@ -226,7 +226,8 @@ mv2_arch_hca_type MV2_get_arch_hca_type(void) hca_type = MV2_HCA_ANY; g_mv2_arch_hca_type = (uint64_t)arch_type << 32 | hca_type; - ibv_free_device_list(dev_list); + if(dev_list) + ibv_free_device_list(dev_list); #else g_mv2_arch_hca_type = mv2_get_arch_hca_type(NULL); #endif