Hello community,

here is the log from the commit of package util-linux for openSUSE:Factory 
checked in at 2018-07-17 09:36:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/util-linux (Old)
 and      /work/SRC/openSUSE:Factory/.util-linux.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "util-linux"

Tue Jul 17 09:36:17 2018 rev:230 rq:621748 version:2.31.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/util-linux/python-libmount.changes       
2018-05-25 21:33:59.319190836 +0200
+++ /work/SRC/openSUSE:Factory/.util-linux.new/python-libmount.changes  
2018-07-17 09:36:20.502582147 +0200
@@ -7,0 +8,19 @@
+Thu May 10 17:22:14 CEST 2018 - sbra...@suse.com
+
+- Fix lscpu and chcpu on systems with >1024 cores
+  (bnc#1091164, util-linux-lscpu-chcpu-new-cpu-macros.patch).
+- Fix CPU count in chcpu
+  (bnc#1091164, util-linux-chcpu-cpu-count.patch).
+
+-------------------------------------------------------------------
+Thu Apr 19 19:30:25 CEST 2018 - sbra...@suse.com
+
+- Backport three upstream patches:
+  * Fix crash loop in lscpu
+    (bsc#1072947, util-linux-lscpu-loop.patch).
+  * Fix possible segfault of umount -a
+    (util-linux-libmount-umount-a-segfault.patch).
+  * Fix mount -a on NFS bind mounts (bsc#1080740,
+    util-linux-libmount-mount-a-nfs-bind-mount.patch).
+
+-------------------------------------------------------------------
util-linux-systemd.changes: same change
util-linux.changes: same change

New:
----
  util-linux-chcpu-cpu-count.patch
  util-linux-libmount-mount-a-nfs-bind-mount.patch
  util-linux-libmount-umount-a-segfault.patch
  util-linux-lscpu-chcpu-new-cpu-macros.patch
  util-linux-lscpu-loop.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-libmount.spec ++++++
--- /var/tmp/diff_new_pack.cydBZY/_old  2018-07-17 09:36:22.318575814 +0200
+++ /var/tmp/diff_new_pack.cydBZY/_new  2018-07-17 09:36:22.318575814 +0200
@@ -174,6 +174,16 @@
 Patch6:         util-linux-fincore-count.patch
 # PATCH-FIX-UPSTREAM util-linux-sysfs-nvme-devno.patch bsc1078662 
sbra...@suse.com -- Fix lsblk on NVMe.
 Patch7:         util-linux-sysfs-nvme-devno.patch
+# PATCH-FIX-UPSTREAM util-linux-lscpu-loop.patch bsc1072947 sbra...@suse.com 
-- Fix crash loop in lscpu.
+Patch8:         util-linux-lscpu-loop.patch
+# PATCH-FIX-UPSTREAM util-linux-libmount-umount-a-segfault.patch 
sbra...@suse.com -- Fix possible segfault of umount -a.
+Patch9:         util-linux-libmount-umount-a-segfault.patch
+# PATCH-FIX-UPSTREAM util-linux-libmount-mount-a-nfs-bind-mount.patch 
bsc1080740 sbra...@suse.com -- Fix mount -a on NFS bind mounts.
+Patch10:        util-linux-libmount-mount-a-nfs-bind-mount.patch
+# PATCH-FIX-UPSTREAM util-linux-lscpu-chcpu-new-cpu-macros.patch bnc1091164 
sbra...@suse.com -- Fix lscpu and chcpu on systems with >1024 cores.
+Patch11:        util-linux-lscpu-chcpu-new-cpu-macros.patch
+# PATCH-FIX-UPSTREAM util-linux-chcpu-cpu-count.patch bnc1091164 
sbra...@suse.com -- chcpu: Properly count CPUs.
+Patch12:        util-linux-chcpu-cpu-count.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 #
 %if %build_util_linux
@@ -417,6 +427,11 @@
 %patch5 -p1
 %patch6 -p1
 %patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
 #
 # setctsid
 cp -p %{S:22} %{S:23} .

util-linux-systemd.spec: same change
++++++ util-linux.spec ++++++
--- /var/tmp/diff_new_pack.cydBZY/_old  2018-07-17 09:36:22.374575618 +0200
+++ /var/tmp/diff_new_pack.cydBZY/_new  2018-07-17 09:36:22.378575605 +0200
@@ -174,6 +174,16 @@
 Patch6:         util-linux-fincore-count.patch
 # PATCH-FIX-UPSTREAM util-linux-sysfs-nvme-devno.patch bsc1078662 
sbra...@suse.com -- Fix lsblk on NVMe.
 Patch7:         util-linux-sysfs-nvme-devno.patch
+# PATCH-FIX-UPSTREAM util-linux-lscpu-loop.patch bsc1072947 sbra...@suse.com 
-- Fix crash loop in lscpu.
+Patch8:         util-linux-lscpu-loop.patch
+# PATCH-FIX-UPSTREAM util-linux-libmount-umount-a-segfault.patch 
sbra...@suse.com -- Fix possible segfault of umount -a.
+Patch9:         util-linux-libmount-umount-a-segfault.patch
+# PATCH-FIX-UPSTREAM util-linux-libmount-mount-a-nfs-bind-mount.patch 
bsc1080740 sbra...@suse.com -- Fix mount -a on NFS bind mounts.
+Patch10:        util-linux-libmount-mount-a-nfs-bind-mount.patch
+# PATCH-FIX-UPSTREAM util-linux-lscpu-chcpu-new-cpu-macros.patch bnc1091164 
sbra...@suse.com -- Fix lscpu and chcpu on systems with >1024 cores.
+Patch11:        util-linux-lscpu-chcpu-new-cpu-macros.patch
+# PATCH-FIX-UPSTREAM util-linux-chcpu-cpu-count.patch bnc1091164 
sbra...@suse.com -- chcpu: Properly count CPUs.
+Patch12:        util-linux-chcpu-cpu-count.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 #
 %if %build_util_linux
@@ -417,6 +427,11 @@
 %patch5 -p1
 %patch6 -p1
 %patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
 #
 # setctsid
 cp -p %{S:22} %{S:23} .


++++++ util-linux-chcpu-cpu-count.patch ++++++
>From 607274943bfd3d4856b872bc4278b36903fb2182 Mon Sep 17 00:00:00 2001
From: Stanislav Brabec <sbra...@suse.cz>
Date: Wed, 9 May 2018 22:13:07 +0200
Subject: [PATCH] chcpu: Fix maximal number of CPUs

chcpu.c mixed maxcpus (number of cpus) and setsize (size of CPU bit
mask). It effectively limits number of CPUs to 1/8 of the supported
amount.

Signed-off-by: Stanislav Brabec <sbra...@suse.cz>
Cc: Michael Matz <m...@suse.de>
Cc: Heiko Carstens <heiko.carst...@de.ibm.com>
---
 sys-utils/chcpu.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/sys-utils/chcpu.c b/sys-utils/chcpu.c
index f32b7a6fc..4b5c7579a 100644
--- a/sys-utils/chcpu.c
+++ b/sys-utils/chcpu.c
@@ -75,12 +75,12 @@ enum {
  */
 static int cpu_enable(cpu_set_t *cpu_set, size_t setsize, int enable)
 {
-       unsigned int cpu;
+       int cpu;
        int online, rc;
        int configured = -1;
-       size_t fails = 0;
+       int fails = 0;
 
-       for (cpu = 0; cpu < setsize; cpu++) {
+       for (cpu = 0; cpu < maxcpus; cpu++) {
                if (!CPU_ISSET_S(cpu, setsize, cpu_set))
                        continue;
                if (!path_exist(_PATH_SYS_CPU "/cpu%d", cpu)) {
@@ -132,7 +132,7 @@ static int cpu_enable(cpu_set_t *cpu_set, size_t setsize, 
int enable)
                }
        }
 
-       return fails == 0 ? 0 : fails == setsize ? -1 : 1;
+       return fails == 0 ? 0 : fails == maxcpus ? -1 : 1;
 }
 
 static int cpu_rescan(void)
@@ -168,11 +168,11 @@ static int cpu_set_dispatch(int mode)
  */
 static int cpu_configure(cpu_set_t *cpu_set, size_t setsize, int configure)
 {
-       unsigned int cpu;
+       int cpu;
        int rc, current;
-       size_t fails = 0;
+       int fails = 0;
 
-       for (cpu = 0; cpu < setsize; cpu++) {
+       for (cpu = 0; cpu < maxcpus; cpu++) {
                if (!CPU_ISSET_S(cpu, setsize, cpu_set))
                        continue;
                if (!path_exist(_PATH_SYS_CPU "/cpu%d", cpu)) {
@@ -217,7 +217,7 @@ static int cpu_configure(cpu_set_t *cpu_set, size_t 
setsize, int configure)
                }
        }
 
-       return fails == 0 ? 0 : fails == setsize ? -1 : 1;
+       return fails == 0 ? 0 : fails == maxcpus ? -1 : 1;
 }
 
 static void cpu_parse(char *cpu_string, cpu_set_t *cpu_set, size_t setsize)
-- 
2.16.3

++++++ util-linux-libmount-mount-a-nfs-bind-mount.patch ++++++
>From 7966cbba53890e1010861b75bd9923e793bbc975 Mon Sep 17 00:00:00 2001
From: NeilBrown <ne...@suse.com>
Date: Wed, 18 Apr 2018 13:31:38 +1000
Subject: [PATCH] libmount: fix mnt_table_is_fs_mounted() for NFS bind mounts.

When you bind-mount a subdirectory of a local filesystem, the
path to that subdirectory appears as the fourth field in mountinfo.

For nfs mounts, the fourth field is always "/", and the subdirectory
part is appended to the "special" (aka "device") field.  This is
consistent with historical NFS usage which always includes a path in
the fs_spec field.

libmount needs to know about this when "mount -a" checks to see if
a filesystem is already mounted.

Without this fix, fstab lines like:

 server::/path /dir nfs defaults 0 0
 /dir/subdir /mnt/test none bind 0 0

result in a new mount at /mnt/test every time "mount -a" is run.

[k...@redhat.com: - use strappend() rather than asprintf()]

Signed-off-by: NeilBrown <ne...@suse.com>
Signed-off-by: Karel Zak <k...@redhat.com>
---
 libmount/src/tab.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/libmount/src/tab.c b/libmount/src/tab.c
index 968057e42..eb61dd33e 100644
--- a/libmount/src/tab.c
+++ b/libmount/src/tab.c
@@ -1542,6 +1542,7 @@ int mnt_table_is_fs_mounted(struct libmnt_table *tb, 
struct libmnt_fs *fstab_fs)
        struct libmnt_fs *fs;
 
        char *root = NULL;
+       char *src2 = NULL;
        const char *src = NULL, *tgt = NULL;
        char *xtgt = NULL;
        int rc = 0;
@@ -1566,8 +1567,17 @@ int mnt_table_is_fs_mounted(struct libmnt_table *tb, 
struct libmnt_fs *fstab_fs)
                        flags = MS_BIND;
 
                rootfs = mnt_table_get_fs_root(tb, fstab_fs, flags, &root);
-               if (rootfs)
+               if (rootfs) {
+                       const char *fstype = mnt_fs_get_fstype(rootfs);
+
                        src = mnt_fs_get_srcpath(rootfs);
+                       if (fstype && strncmp(fstype, "nfs", 3) == 0 && root) {
+                               /* NFS stores the root at the end of the source 
*/
+                               src = src2 = strappend(src, root);
+                               free(root);
+                               root = NULL;
+                       }
+               }
        }
 
        if (!src)
@@ -1667,6 +1677,7 @@ done:
        free(root);
 
        DBG(TAB, ul_debugobj(tb, "mnt_table_is_fs_mounted: %s [rc=%d]", src, 
rc));
+       free(src2);
        return rc;
 }
 
-- 
2.16.3

++++++ util-linux-libmount-umount-a-segfault.patch ++++++
>From f958101d2ea55174f8cd584efe41d4cefa9578c6 Mon Sep 17 00:00:00 2001
From: Richard Fuchs <rfu...@sipwise.com>
Date: Tue, 17 Apr 2018 09:40:20 -0400
Subject: [PATCH] bugfix: fix possible segfault during umount -a

mnt_context_get_mtab() doesn't set its return **tb argument on error,
and so in mnt_context_next_umount() mtab will remain uninitialized on
error, later resulting in cxt->mtab containing garbage, possibly
resulting in segfault on exit.
---
 libmount/src/context_umount.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libmount/src/context_umount.c b/libmount/src/context_umount.c
index 45651b58e..240ec3be6 100644
--- a/libmount/src/context_umount.c
+++ b/libmount/src/context_umount.c
@@ -1003,11 +1003,12 @@ int mnt_context_next_umount(struct libmnt_context *cxt,
        rc = mnt_context_get_mtab(cxt, &mtab);
        cxt->mtab = NULL;               /* do not reset mtab */
        mnt_reset_context(cxt);
-       cxt->mtab = mtab;
 
        if (rc)
                return rc;
 
+       cxt->mtab = mtab;
+
        do {
                rc = mnt_table_next_fs(mtab, itr, fs);
                if (rc != 0)
-- 
2.16.3

++++++ util-linux-lscpu-chcpu-new-cpu-macros.patch ++++++
>From 538b50cb0a4aac56b6b3b6e4d1e8ce886854c6d8 Mon Sep 17 00:00:00 2001
From: Stanislav Brabec <sbra...@suse.cz>
Date: Wed, 9 May 2018 18:08:32 +0200
Subject: [PATCH] lscpu, chcpu: Avoid use of the old CPU macros

The old CPU macros are limited to 1024 cores. As a result, lscpu cannot
count sockets on large systems. Use new scalable macros.

Signed-off-by: Stanislav Brabec <sbra...@suse.cz>
Cc: Michael Matz <m...@suse.de>
---
 sys-utils/chcpu.c |  6 +++---
 sys-utils/lscpu.c | 13 +++++++++----
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/sys-utils/chcpu.c b/sys-utils/chcpu.c
index 12e52d887..f32b7a6fc 100644
--- a/sys-utils/chcpu.c
+++ b/sys-utils/chcpu.c
@@ -81,7 +81,7 @@ static int cpu_enable(cpu_set_t *cpu_set, size_t setsize, int 
enable)
        size_t fails = 0;
 
        for (cpu = 0; cpu < setsize; cpu++) {
-               if (!CPU_ISSET(cpu, cpu_set))
+               if (!CPU_ISSET_S(cpu, setsize, cpu_set))
                        continue;
                if (!path_exist(_PATH_SYS_CPU "/cpu%d", cpu)) {
                        warnx(_("CPU %u does not exist"), cpu);
@@ -127,7 +127,7 @@ static int cpu_enable(cpu_set_t *cpu_set, size_t setsize, 
int enable)
                        } else {
                                printf(_("CPU %u disabled\n"), cpu);
                                if (onlinecpus)
-                                       CPU_CLR(cpu, onlinecpus);
+                                       CPU_CLR_S(cpu, setsize, onlinecpus);
                        }
                }
        }
@@ -173,7 +173,7 @@ static int cpu_configure(cpu_set_t *cpu_set, size_t 
setsize, int configure)
        size_t fails = 0;
 
        for (cpu = 0; cpu < setsize; cpu++) {
-               if (!CPU_ISSET(cpu, cpu_set))
+               if (!CPU_ISSET_S(cpu, setsize, cpu_set))
                        continue;
                if (!path_exist(_PATH_SYS_CPU "/cpu%d", cpu)) {
                        warnx(_("CPU %u does not exist"), cpu);
diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c
index 2132511a5..fd6d63bbf 100644
--- a/sys-utils/lscpu.c
+++ b/sys-utils/lscpu.c
@@ -478,7 +478,7 @@ read_basicinfo(struct lscpu_desc *desc, struct 
lscpu_modifier *mod)
                desc->idx2cpunum = xcalloc(desc->ncpuspos, sizeof(int));
 
                for (num = 0, idx = 0; num < maxcpus; num++) {
-                       if (CPU_ISSET(num, tmp))
+                       if (CPU_ISSET_S(num, setsize, tmp))
                                desc->idx2cpunum[idx++] = num;
                }
                cpuset_free(tmp);
@@ -1109,10 +1109,11 @@ cpu_max_mhz(struct lscpu_desc *desc, char *buf, size_t 
bufsz)
 {
        int i;
        float cpu_freq = 0.0;
+       size_t setsize = CPU_ALLOC_SIZE(maxcpus);
 
        if (desc->present) {
                for (i = 0; i < desc->ncpuspos; i++) {
-                       if (CPU_ISSET(real_cpu_num(desc, i), desc->present)
+                       if (CPU_ISSET_S(real_cpu_num(desc, i), setsize, 
desc->present)
                            && desc->maxmhz[i]) {
                                float freq = atof(desc->maxmhz[i]);
 
@@ -1131,10 +1132,11 @@ cpu_min_mhz(struct lscpu_desc *desc, char *buf, size_t 
bufsz)
 {
        int i;
        float cpu_freq = -1.0;
+       size_t setsize = CPU_ALLOC_SIZE(maxcpus);
 
        if (desc->present) {
                for (i = 0; i < desc->ncpuspos; i++) {
-                       if (CPU_ISSET(real_cpu_num(desc, i), desc->present)
+                       if (CPU_ISSET_S(real_cpu_num(desc, i), setsize, 
desc->present)
                            && desc->minmhz[i]) {
                                float freq = atof(desc->minmhz[i]);
 
@@ -1931,6 +1933,7 @@ int main(int argc, char *argv[])
        int c, i;
        int columns[ARRAY_SIZE(coldescs)], ncolumns = 0;
        int cpu_modifier_specified = 0;
+       size_t setsize;
 
        static const struct option longopts[] = {
                { "all",        no_argument,       NULL, 'a' },
@@ -2034,10 +2037,12 @@ int main(int argc, char *argv[])
 
        read_basicinfo(desc, mod);
 
+       setsize = CPU_ALLOC_SIZE(maxcpus);
+
        for (i = 0; i < desc->ncpuspos; i++) {
                /* only consider present CPUs */
                if (desc->present &&
-                   !CPU_ISSET(real_cpu_num(desc, i), desc->present))
+                   !CPU_ISSET_S(real_cpu_num(desc, i), setsize, desc->present))
                        continue;
                read_topology(desc, i);
                read_cache(desc, i);
-- 
2.16.3

++++++ util-linux-lscpu-loop.patch ++++++
>From 95f09bc63c564c50ec2c393352801cc056faaea2 Mon Sep 17 00:00:00 2001
From: Dirk Mueller <dmuel...@suse.com>
Date: Sat, 17 Mar 2018 13:18:38 +0100
Subject: [PATCH] Avoid crash in min/max caculation when cpu#0 being offline

When cpu#0 is offline, atof(NULL) is called which causes
a segfault or endless loop depending on implementation
circumstances. So instead of implicitely assumping that the
first cpu is always available, do the presence checks for
all including the first one.
---
 sys-utils/lscpu.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c
index 6d1fde555..2132511a5 100644
--- a/sys-utils/lscpu.c
+++ b/sys-utils/lscpu.c
@@ -1108,10 +1108,10 @@ static char *
 cpu_max_mhz(struct lscpu_desc *desc, char *buf, size_t bufsz)
 {
        int i;
-       float cpu_freq = atof(desc->maxmhz[0]);
+       float cpu_freq = 0.0;
 
        if (desc->present) {
-               for (i = 1; i < desc->ncpuspos; i++) {
+               for (i = 0; i < desc->ncpuspos; i++) {
                        if (CPU_ISSET(real_cpu_num(desc, i), desc->present)
                            && desc->maxmhz[i]) {
                                float freq = atof(desc->maxmhz[i]);
@@ -1129,16 +1129,16 @@ cpu_max_mhz(struct lscpu_desc *desc, char *buf, size_t 
bufsz)
 static char *
 cpu_min_mhz(struct lscpu_desc *desc, char *buf, size_t bufsz)
 {
-        int i;
-        float cpu_freq = atof(desc->minmhz[0]);
+       int i;
+       float cpu_freq = -1.0;
 
        if (desc->present) {
-               for (i = 1; i < desc->ncpuspos; i++) {
+               for (i = 0; i < desc->ncpuspos; i++) {
                        if (CPU_ISSET(real_cpu_num(desc, i), desc->present)
                            && desc->minmhz[i]) {
                                float freq = atof(desc->minmhz[i]);
 
-                               if (freq < cpu_freq)
+                               if (cpu_freq < 0.0 || freq < cpu_freq)
                                        cpu_freq = freq;
                        }
                }
-- 
2.16.3


Reply via email to