!240 [sync] PR-239: fix lscpu core dump

From: @openeuler-sync-bot 
Reviewed-by: @openeuler-basic 
Signed-off-by: @openeuler-basic
This commit is contained in:
openeuler-ci-bot 2024-04-29 03:40:56 +00:00 committed by Gitee
commit a6674deaaf
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
3 changed files with 103 additions and 1 deletions

View File

@ -0,0 +1,28 @@
From 9ce09ccc3c8eee9be4fb5f33ae382d92c69dc411 Mon Sep 17 00:00:00 2001
From: Karel Zak <kzak@redhat.com>
Date: Wed, 20 Mar 2024 14:42:28 +0100
Subject: [PATCH] lscpu: don't use NULL sharedmap
Fixes: https://github.com/util-linux/util-linux/issues/2846
Signed-off-by: Karel Zak <kzak@redhat.com>
---
sys-utils/lscpu-topology.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/sys-utils/lscpu-topology.c b/sys-utils/lscpu-topology.c
index 7ee18e785..e3742e319 100644
--- a/sys-utils/lscpu-topology.c
+++ b/sys-utils/lscpu-topology.c
@@ -253,7 +253,8 @@ struct lscpu_cache *lscpu_cpu_get_cache(struct lscpu_cxt *cxt,
for (i = 0; i < cxt->ncaches; i++) {
struct lscpu_cache *ca = &cxt->caches[i];
- if (strcmp(ca->name, name) == 0 &&
+ if (ca->sharedmap &&
+ strcmp(ca->name, name) == 0 &&
CPU_ISSET_S(cpu->logical_id, cxt->setsize, ca->sharedmap))
return ca;
}
--
2.33.0

View File

@ -0,0 +1,63 @@
From 01cb80bae8e79b21067b4a85eb4f82b14104130c Mon Sep 17 00:00:00 2001
From: Karel Zak <kzak@redhat.com>
Date: Mon, 19 Sep 2022 13:30:14 +0200
Subject: [PATCH] lscpu: use topology maps in more robust way
Addresses: https://github.com/util-linux/util-linux/issues/1810
Signed-off-by: Karel Zak <kzak@redhat.com>
---
sys-utils/lscpu-topology.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/sys-utils/lscpu-topology.c b/sys-utils/lscpu-topology.c
index fe4da7cd5..754b3fcb4 100644
--- a/sys-utils/lscpu-topology.c
+++ b/sys-utils/lscpu-topology.c
@@ -106,7 +106,7 @@ static int cputype_read_topology(struct lscpu_cxt *cxt, struct lscpu_cputype *ct
struct lscpu_cpu *cpu = cxt->cpus[i];
cpu_set_t *thread_siblings = NULL, *core_siblings = NULL;
cpu_set_t *book_siblings = NULL, *drawer_siblings = NULL;
- int num, n;
+ int num, n = 0;
if (!cpu || cpu->type != ct)
continue;
@@ -126,7 +126,8 @@ static int cputype_read_topology(struct lscpu_cxt *cxt, struct lscpu_cputype *ct
ul_path_readf_cpuset(sys, &drawer_siblings, cxt->maxcpus,
"cpu%d/topology/drawer_siblings", num);
- n = CPU_COUNT_S(cxt->setsize, thread_siblings);
+ if (thread_siblings)
+ n = CPU_COUNT_S(cxt->setsize, thread_siblings);
if (!n)
n = 1;
if (n > nthreads)
@@ -140,9 +141,9 @@ static int cputype_read_topology(struct lscpu_cxt *cxt, struct lscpu_cputype *ct
* E.g. completely virtualized architectures like s390 may
* have multiple sockets of different sizes.
*/
- if (!ct->coremaps)
+ if (!ct->coremaps && thread_siblings)
ct->coremaps = xcalloc(npos, sizeof(cpu_set_t *));
- if (!ct->socketmaps)
+ if (!ct->socketmaps && core_siblings)
ct->socketmaps = xcalloc(npos, sizeof(cpu_set_t *));
if (!ct->bookmaps && book_siblings)
ct->bookmaps = xcalloc(npos, sizeof(cpu_set_t *));
@@ -150,9 +151,10 @@ static int cputype_read_topology(struct lscpu_cxt *cxt, struct lscpu_cputype *ct
ct->drawermaps = xcalloc(npos, sizeof(cpu_set_t *));
/* add to topology maps */
- add_cpuset_to_array(ct->coremaps, &ct->ncores, thread_siblings, cxt->setsize);
- add_cpuset_to_array(ct->socketmaps, &ct->nsockets, core_siblings, cxt->setsize);
-
+ if (thread_siblings)
+ add_cpuset_to_array(ct->coremaps, &ct->ncores, thread_siblings, cxt->setsize);
+ if (core_siblings)
+ add_cpuset_to_array(ct->socketmaps, &ct->nsockets, core_siblings, cxt->setsize);
if (book_siblings)
add_cpuset_to_array(ct->bookmaps, &ct->nbooks, book_siblings, cxt->setsize);
if (drawer_siblings)
--
2.33.0

View File

@ -3,7 +3,7 @@
Name: util-linux
Version: 2.37.2
Release: 29
Release: 30
Summary: A random collection of Linux utilities
License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
URL: https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git
@ -144,6 +144,8 @@ Patch6122: backport-sys-utils-lscpu-Unblock-SIGSEGV-before-vmware_bdoor.pat
Patch6123: backport-libblkid-Check-offset-in-LUKS2-header.patch
Patch6124: backport-more-fix-poll-use.patch
Patch6125: backport-CVE-2024-28085.patch
Patch6126: backport-lscpu-don-t-use-NULL-sharedmap.patch
Patch6127: backport-lscpu-use-topology-maps-in-more-robust-way.patch
Patch9000: Add-check-to-resolve-uname26-version-test-failed.patch
Patch9001: SKIPPED-no-root-permissions-test.patch
@ -517,6 +519,15 @@ fi
%{_mandir}/man8/{swapoff.8*,swapon.8*,switch_root.8*,umount.8*,wdctl.8.gz,wipefs.8*,zramctl.8*}
%changelog
* Sun Apr 28 2024 zhangyao <zhangyao108@huawei.com> - 2.37.2-30
- Type:bugfix
- CVE:NA
- SUG:NA
- DESC:fix lscpu core dump
backport-lscpu-don-t-use-NULL-sharedmap.patch
backport-lscpu-use-topology-maps-in-more-robust-way.patch
* Mon Apr 22 2024 zhangyao <zhangyao108@huawei.com> - 2.37.2-29
- Type:bugfix
- CVE:NA