Nicolas Morey
b3c4954942
- Update to v3.0 GA - Cleanup spec file - standard flavour has been removed and has been replaced by the ucx flavour - Drop 32b arch support - Disable static libraries for non-HPC build - No need to pull ucx nor libfabric-devel for mvapich3-devel - Replace 0001-fix-control-reaches-end-of-non-void-function.patch with upstream: - mpi-coll-missing-return.patch - mpl-warnings-missing-return.patch - Add: - mvapich3-s390_get_cycles.patch for s390 support - pass-correct-size-to-snprintf.patch to fix potential overflows - autoconf-pull-dynamic-and-not-static-libs-from-pkg-config.patch to fix libfabric sub dependencies being unnecessary pulled - config-replace-AC_TRY_-COMPILE-LINK-RUN.patch to replace osolete autoconf macros OBS-URL: https://build.opensuse.org/request/show/1148143 OBS-URL: https://build.opensuse.org/package/show/science:HPC/mvapich3?expand=0&rev=4
262 lines
14 KiB
Diff
262 lines
14 KiB
Diff
commit 8a3405cf8d4e5a95bc46a7c518c1fd2809cf5417
|
|
Author: Nicolas Morey <nmorey@suse.com>
|
|
Date: Fri Nov 10 10:59:04 2023 +0100
|
|
|
|
pass correct size to snprintf
|
|
|
|
Fix potential buffer overflows (required to make 'sundials' testsuite pass)
|
|
|
|
Signed-off-by: Nicolas Morey <nmorey@suse.com>
|
|
|
|
diff --git src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c
|
|
index 45a31c7ab228..fd4e1d92f1bf 100644
|
|
--- src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c
|
|
+++ src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c
|
|
@@ -2245,7 +2245,7 @@ int smpi_identify_free_cores(hwloc_cpuset_t *sock_cpuset,
|
|
for (i = 0; i < g_smpi.num_local_nodes; ++i) {
|
|
hwloc_bitmap_clr(*free_sock_cpuset, local_core_ids[i]);
|
|
}
|
|
- hwloc_bitmap_snprintf(cpu_str, 128, *free_sock_cpuset);
|
|
+ hwloc_bitmap_snprintf(cpu_str, sizeof(cpu_str), *free_sock_cpuset);
|
|
PRINT_DEBUG(DEBUG_INIT_verbose, "Free sock_cpuset = %s\n", cpu_str);
|
|
}
|
|
|
|
@@ -3386,12 +3386,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
for (i = 0; i < local_procs; i++) {
|
|
curr = count;
|
|
for (k = 0; k < num_app_threads; k++) {
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[curr]);
|
|
curr = (curr + 1) % num_pu;
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
count = (count + hw_threads_per_core) % num_pu;
|
|
}
|
|
} else if (mvp_hybrid_binding_policy == HYBRID_LINEAR) {
|
|
@@ -3400,7 +3400,7 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
* physical resources */
|
|
for (i = 0; i < local_procs; i++) {
|
|
for (k = 0; k < num_app_threads; k++) {
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[curr]);
|
|
|
|
curr = ((curr + hw_threads_per_core) >= num_pu) ?
|
|
@@ -3408,7 +3408,7 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
(curr + hw_threads_per_core) % num_pu;
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
}
|
|
} else if (mvp_hybrid_binding_policy == HYBRID_SPREAD) {
|
|
#if defined(CHANNEL_MRAIL)
|
|
@@ -3432,12 +3432,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
for (k = curr; k < curr + chunk; k++) {
|
|
for (l = 0; l < hw_threads_per_core; l++) {
|
|
j +=
|
|
- snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[k * hw_threads_per_core + l]);
|
|
}
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
curr = (curr + chunk) % size;
|
|
}
|
|
} else {
|
|
@@ -3454,11 +3454,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
for (k = curr; k < curr + ranks_per_sock; k++) {
|
|
for (l = 0; l < hw_threads_per_core; l++) {
|
|
j +=
|
|
- snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[k * hw_threads_per_core + l]);
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
}
|
|
curr = (curr +
|
|
((num_pu_per_socket / hw_threads_per_core) * chunk)) %
|
|
@@ -3470,12 +3470,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
* socket followed by second secket */
|
|
for (i = 0; i < local_procs; i++) {
|
|
for (l = 0; l < num_app_threads; l++) {
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[k]);
|
|
k = (k + hw_threads_per_core) % size;
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
}
|
|
} else if (mvp_hybrid_binding_policy == HYBRID_SCATTER) {
|
|
#if defined(CHANNEL_MRAIL)
|
|
@@ -3495,11 +3495,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
}
|
|
for (i = 0; i < local_procs; i++) {
|
|
for (l = 0; l < num_app_threads; l++) {
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[node_base_pu + node_offset + l]);
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
node_base_pu = (node_base_pu + num_pu_per_socket) % size;
|
|
/*
|
|
* when wrapping around to the first socket, advance the offset
|
|
@@ -3541,11 +3541,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
for (i = 0; i < local_procs; i++) {
|
|
for (l = 0; l < num_app_threads; l++) {
|
|
j += snprintf(
|
|
- mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map_per_numa[node_base_pu + node_offset + l]);
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
node_base_pu = (node_base_pu + num_pu_per_numanode) % size;
|
|
/*
|
|
* when wrapping around to the first numa, advance the offset
|
|
diff --git src/mpid/ch4/netmod/mvp/hwloc_bind.c src/mpid/ch4/netmod/mvp/hwloc_bind.c
|
|
index 44e867b6b19f..4440d4739dc0 100644
|
|
--- src/mpid/ch4/netmod/mvp/hwloc_bind.c
|
|
+++ src/mpid/ch4/netmod/mvp/hwloc_bind.c
|
|
@@ -2145,7 +2145,7 @@ int smpi_identify_free_cores(hwloc_cpuset_t *sock_cpuset,
|
|
for (i = 0; i < mvp_smp_info.num_local_nodes; ++i) {
|
|
hwloc_bitmap_clr(*free_sock_cpuset, local_core_ids[i]);
|
|
}
|
|
- hwloc_bitmap_snprintf(cpu_str, 128, *free_sock_cpuset);
|
|
+ hwloc_bitmap_snprintf(cpu_str, sizeof(cpu_str), *free_sock_cpuset);
|
|
PRINT_DEBUG(DEBUG_INIT_verbose, "Free sock_cpuset = %s\n", cpu_str);
|
|
}
|
|
|
|
@@ -3273,7 +3273,7 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
/* one app thread or enough phsyical cores for all threads */
|
|
for (i = 0; i < local_procs; i++) {
|
|
for (k = 0; k < num_app_threads; k++) {
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[curr]);
|
|
|
|
curr =
|
|
@@ -3282,7 +3282,7 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
(curr + hw_threads_per_core) % num_pu;
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
}
|
|
} else {
|
|
/*
|
|
@@ -3292,12 +3292,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
for (i = 0; i < local_procs; i++) {
|
|
curr = count;
|
|
for (k = 0; k < num_app_threads; k++) {
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[curr]);
|
|
curr = (curr + 1) % num_pu;
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
count = (count + hw_threads_per_core) % num_pu;
|
|
}
|
|
}
|
|
@@ -3326,12 +3326,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
for (i = 0; i < local_procs; i++) {
|
|
curr = count;
|
|
for (k = 0; k < num_app_threads; k++) {
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[curr]);
|
|
curr = (curr + 1) % num_pu;
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
count = (count + hw_threads_per_core) % num_pu;
|
|
}
|
|
break;
|
|
@@ -3359,12 +3359,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
for (k = curr; k < curr + chunk; k++) {
|
|
for (l = 0; l < hw_threads_per_core; l++) {
|
|
j += snprintf(
|
|
- mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[k * hw_threads_per_core + l]);
|
|
}
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
curr = (curr + chunk) % size;
|
|
}
|
|
} else {
|
|
@@ -3381,11 +3381,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
for (k = curr; k < curr + ranks_per_sock; k++) {
|
|
for (l = 0; l < hw_threads_per_core; l++) {
|
|
j += snprintf(
|
|
- mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[k * hw_threads_per_core + l]);
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
}
|
|
curr = (curr + ((num_pu_per_socket / hw_threads_per_core) *
|
|
chunk)) %
|
|
@@ -3398,12 +3398,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
* first socket followed by second secket. */
|
|
for (i = 0; i < local_procs; i++) {
|
|
for (l = 0; l < num_app_threads; l++) {
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[k]);
|
|
k = (k + hw_threads_per_core) % size;
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
}
|
|
break;
|
|
case MVP_HYBRID_BINDING_POLICY_SCATTER:
|
|
@@ -3425,11 +3425,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
}
|
|
for (i = 0; i < local_procs; i++) {
|
|
for (l = 0; l < num_app_threads; l++) {
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[node_base_pu + node_offset + l]);
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
node_base_pu = (node_base_pu + num_pu_per_socket) % size;
|
|
/*
|
|
* when wrapping around to the first socket, advance the offset
|
|
@@ -3468,11 +3468,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs,
|
|
* domains in round-robin fashion. */
|
|
for (i = 0; i < local_procs; i++) {
|
|
for (l = 0; l < num_app_threads; l++) {
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,",
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, "%d,",
|
|
mvp_core_map[node_base_pu + node_offset + l]);
|
|
}
|
|
mapping[--j] = '\0';
|
|
- j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":");
|
|
+ j += snprintf(mapping + j, sizeof(mapping)-j, ":");
|
|
node_base_pu = (node_base_pu + num_pu_per_numanode) % size;
|
|
/*
|
|
* when wrapping around to the first numa, advance the offset
|