From 2660c6194c4ea7b42c0146b53cccbf6ba1b7975c Mon Sep 17 00:00:00 2001 From: zhangyao Date: Sun, 28 Apr 2024 16:53:43 +0800 Subject: [PATCH] fix lscpu core dump (cherry picked from commit de77918b3afddcdcd64ab3887d6ef6c22740e1ce) --- backport-lscpu-don-t-use-NULL-sharedmap.patch | 28 +++++++++ ...use-topology-maps-in-more-robust-way.patch | 63 +++++++++++++++++++ util-linux.spec | 13 +++- 3 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 backport-lscpu-don-t-use-NULL-sharedmap.patch create mode 100644 backport-lscpu-use-topology-maps-in-more-robust-way.patch diff --git a/backport-lscpu-don-t-use-NULL-sharedmap.patch b/backport-lscpu-don-t-use-NULL-sharedmap.patch new file mode 100644 index 0000000..afcbb96 --- /dev/null +++ b/backport-lscpu-don-t-use-NULL-sharedmap.patch @@ -0,0 +1,28 @@ +From 9ce09ccc3c8eee9be4fb5f33ae382d92c69dc411 Mon Sep 17 00:00:00 2001 +From: Karel Zak +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 +--- + 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 + diff --git a/backport-lscpu-use-topology-maps-in-more-robust-way.patch b/backport-lscpu-use-topology-maps-in-more-robust-way.patch new file mode 100644 index 0000000..ed9b2fc --- /dev/null +++ b/backport-lscpu-use-topology-maps-in-more-robust-way.patch @@ -0,0 +1,63 @@ +From 01cb80bae8e79b21067b4a85eb4f82b14104130c Mon Sep 17 00:00:00 2001 +From: Karel Zak +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 +--- + 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 + diff --git a/util-linux.spec b/util-linux.spec index 55d2a4d..12e2c6f 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -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 - 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 - 2.37.2-29 - Type:bugfix - CVE:NA