From 7bfb1c344aa4cd2c79cbf53a2a348a499b2f61f4efb398f65ee892d45f9b86d3 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Tue, 7 Aug 2018 23:53:11 +0000 Subject: [PATCH] Accepting request 627729 from home:sbrabec:branches:util-linux-python3 - Update to version 2.32.1... - Switch python-libmount to python3-libmount. OBS-URL: https://build.opensuse.org/request/show/627729 OBS-URL: https://build.opensuse.org/package/show/Base:System/util-linux?expand=0&rev=378 --- pre_checkin.sh | 16 +- ...bmount.changes => python3-libmount.changes | 38 ++ python-libmount.spec => python3-libmount.spec | 60 +- util-linux-2.31.1.tar.sign | 16 - util-linux-2.31.1.tar.xz | 3 - util-linux-2.32.1.tar.sign | 16 + util-linux-2.32.1.tar.xz | 3 + util-linux-chcpu-cpu-count.patch | 72 --- util-linux-cramfs.patch | 406 ------------- util-linux-fincore-count.patch | 34 -- ...inux-libmount-mount-a-nfs-bind-mount.patch | 73 --- util-linux-libmount-umount-a-segfault.patch | 34 -- util-linux-lscpu-chcpu-new-cpu-macros.patch | 110 ---- util-linux-lscpu-loop.patch | 55 -- util-linux-lsmem-memory-zone-1.patch | 536 ------------------ util-linux-lsmem-memory-zone-2.patch | 107 ---- util-linux-lsmem-memory-zone-3.patch | 44 -- util-linux-sysfs-nvme-devno.patch | 157 ----- util-linux-systemd.changes | 38 ++ util-linux-systemd.spec | 56 +- util-linux.changes | 38 ++ util-linux.spec | 56 +- util_linux_bigendian.patch | 512 ----------------- 23 files changed, 173 insertions(+), 2307 deletions(-) rename python-libmount.changes => python3-libmount.changes (99%) rename python-libmount.spec => python3-libmount.spec (93%) delete mode 100644 util-linux-2.31.1.tar.sign delete mode 100644 util-linux-2.31.1.tar.xz create mode 100644 util-linux-2.32.1.tar.sign create mode 100644 util-linux-2.32.1.tar.xz delete mode 100644 util-linux-chcpu-cpu-count.patch delete mode 100644 util-linux-cramfs.patch delete mode 100644 util-linux-fincore-count.patch delete mode 100644 util-linux-libmount-mount-a-nfs-bind-mount.patch delete mode 100644 util-linux-libmount-umount-a-segfault.patch delete mode 100644 util-linux-lscpu-chcpu-new-cpu-macros.patch delete mode 100644 util-linux-lscpu-loop.patch delete mode 100644 util-linux-lsmem-memory-zone-1.patch delete mode 100644 util-linux-lsmem-memory-zone-2.patch delete mode 100644 util-linux-lsmem-memory-zone-3.patch delete mode 100644 util-linux-sysfs-nvme-devno.patch delete mode 100644 util_linux_bigendian.patch diff --git a/pre_checkin.sh b/pre_checkin.sh index 5cd0052..e5dafb1 100644 --- a/pre_checkin.sh +++ b/pre_checkin.sh @@ -1,11 +1,11 @@ #!/bin/sh -if test util-linux.spec -ot python-libmount.spec ; then - echo "util-linux.spec is older than python-libmount.spec. Please merge changes manually and call pre-checkin.sh again." +if test util-linux.spec -ot python3-libmount.spec ; then + echo "util-linux.spec is older than python3-libmount.spec. Please merge changes manually and call pre-checkin.sh again." exit 1 fi -if test util-linux.changes -ot python-libmount.changes ; then - echo "util-linux.changes is older than python-libmount.changes. Please merge changes manually and call pre-checkin.sh again." +if test util-linux.changes -ot python3-libmount.changes ; then + echo "util-linux.changes is older than python3-libmount.changes. Please merge changes manually and call pre-checkin.sh again." exit 1 fi @@ -19,10 +19,10 @@ if test util-linux.changes -ot util-linux-systemd.changes ; then fi sed ' - s/spec file for package util-linux/spec file for package python-libmount/; - /^Name:/s/util-linux/python-libmount/; + s/spec file for package util-linux/spec file for package python3-libmount/; + /^Name:/s/util-linux/python3-libmount/; s/WARNING: After editing this file please/WARNING: Never edit this file!!! Edit util-linux.spec and/ -' python-libmount.spec +' python3-libmount.spec sed ' s/spec file for package util-linux/spec file for package util-linux-systemd/; @@ -30,7 +30,7 @@ sed ' s/WARNING: After editing this file please/WARNING: Never edit this file!!! Edit util-linux.spec and/ ' util-linux-systemd.spec -cp -a util-linux.changes python-libmount.changes +cp -a util-linux.changes python3-libmount.changes cp -a util-linux.changes util-linux-systemd.changes diff --git a/python-libmount.changes b/python3-libmount.changes similarity index 99% rename from python-libmount.changes rename to python3-libmount.changes index f345599..4956a6c 100644 --- a/python-libmount.changes +++ b/python3-libmount.changes @@ -1,3 +1,41 @@ +------------------------------------------------------------------- +Mon Aug 6 15:21:35 CEST 2018 - sbrabec@suse.com + +- Update to version 2.32.1: + * cal(1) has been improved and extended. + * libblkid has been extended to support LUKS2, Micron mpool, VDO + and Atari partition table. + * rfkill(8) has been moved to /usr/sbin. + * dmesg(1) provides better support for multi-line messages, new + command line option --force-prefix. + * fallocate(1) --dig-holes is faster and more effect now. + * fdisk(8) provides access to Protective MBR accessible from main + menu. Sun label support has been improved. + * lscpu(1) provides more details about ARM CPUs now + (FATE#326453). + * lsmem(1) supports memory zone awareness now (FATE#324252, + drop util-linux-lsmem-memory-zone-1.patch, + util-linux-lsmem-memory-zone-2.patch, + util-linux-lsmem-memory-zone-3.patch). + * lsns(8) provides netnsid and nsfs columns now. + * rtcwake(8) waits stdin to settle down before entering a system + sleep. + * Many fixes and improvements, see + https://www.kernel.org/pub/linux/utils/util-linux/v2.32/v2.32-ReleaseNotes + https://www.kernel.org/pub/linux/utils/util-linux/v2.32/v2.32.1-ReleaseNotes + (drop util_linux_bigendian.patch, util-linux-cramfs.patch, + util-linux-fincore-count.patch, + util-linux-sysfs-nvme-devno.patch, util-linux-lscpu-loop.patch, + util-linux-libmount-umount-a-segfault.patch, + util-linux-libmount-mount-a-nfs-bind-mount.patch, + util-linux-lscpu-chcpu-new-cpu-macros.patch, + util-linux-chcpu-cpu-count.patch). + +------------------------------------------------------------------- +Tue Jul 3 16:27:27 CEST 2018 - sbrabec@suse.com + +- Switch python-libmount to python3-libmount. + ------------------------------------------------------------------- Tue May 22 11:54:13 UTC 2018 - tchvatal@suse.com diff --git a/python-libmount.spec b/python3-libmount.spec similarity index 93% rename from python-libmount.spec rename to python3-libmount.spec index 584cfe7..9d2be3c 100644 --- a/python-libmount.spec +++ b/python3-libmount.spec @@ -1,5 +1,5 @@ # -# spec file for package python-libmount +# spec file for package python3-libmount # # Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # @@ -22,7 +22,7 @@ %bcond_with enable_last %endif -Name: python-libmount +Name: python3-libmount %define _name util-linux # WARNING: Never edit this file!!! Edit util-linux.spec and call pre_checkin.sh to update spec files: %define _name util-linux @@ -43,7 +43,7 @@ Name: python-libmount %define group_ul System/Base %define group_uls System/Base %define group_pl Development/Languages/Python -%if "%{name}" == "python-libmount" +%if "%{name}" == "python3-libmount" %define build_util_linux 0 %define build_util_linux_systemd 0 %define build_python_libmount 1 @@ -101,7 +101,7 @@ BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(libsystemd) %endif %if %build_python_libmount -BuildRequires: python-devel +BuildRequires: python3-devel %endif #BEGIN SECOND STAGE DEPENDENCIES %if !%build_util_linux @@ -116,7 +116,7 @@ BuildRequires: libmount-devel %endif %endif #END SECOND STAGE DEPENDENCIES -Version: 2.31.1 +Version: 2.32.1 Release: 0 # util-linux is a base package and uuidd pre-requiring pwdutils pulls # that into the core build cycle. pwdutils also pulls in the whole @@ -125,7 +125,7 @@ Release: 0 # these tools as well #!BuildIgnore: pwdutils Url: https://www.kernel.org/pub/linux/utils/util-linux/ -Source: https://www.kernel.org/pub/linux/utils/util-linux/v2.31/util-linux-%{version}.tar.xz +Source: https://www.kernel.org/pub/linux/utils/util-linux/v2.32/util-linux-%{version}.tar.xz Source1: util-linux-rpmlintrc Source4: raw.service Source5: etc.raw @@ -135,7 +135,7 @@ Source8: login.pamd Source9: remote.pamd Source10: su.pamd Source11: su.default -Source12: https://www.kernel.org/pub/linux/utils/util-linux/v2.31/util-linux-%{version}.tar.sign +Source12: https://www.kernel.org/pub/linux/utils/util-linux/v2.32/util-linux-%{version}.tar.sign Source13: %{_name}.keyring Source14: runuser.pamd Source15: runuser-l.pamd @@ -160,30 +160,6 @@ Source51: blkid.conf ## # PATCH-EXTEND-UPSTREAM: Let `su' handle /sbin and /usr/sbin in path Patch0: make-sure-sbin-resp-usr-sbin-are-in-PATH.diff -# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-1.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. -Patch1: util-linux-lsmem-memory-zone-1.patch -# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-2.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. -Patch2: util-linux-lsmem-memory-zone-2.patch -# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-3.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. -Patch3: util-linux-lsmem-memory-zone-3.patch -# Add four commits from upstream to pass tests on ppc64 -Patch4: util_linux_bigendian.patch -# PATCH-FIX-UPSTREAM util-linux-cramfs.patch sbrabec@suse.com -- Fix fsck.cramfs failure on ppc64le. -Patch5: util-linux-cramfs.patch -# PATCH-FIX-UPSTREAM util-linux-fincore-count.patch sbrabec@suse.com -- Disable bad test fincore/count. -Patch6: util-linux-fincore-count.patch -# PATCH-FIX-UPSTREAM util-linux-sysfs-nvme-devno.patch bsc1078662 sbrabec@suse.com -- Fix lsblk on NVMe. -Patch7: util-linux-sysfs-nvme-devno.patch -# PATCH-FIX-UPSTREAM util-linux-lscpu-loop.patch bsc1072947 sbrabec@suse.com -- Fix crash loop in lscpu. -Patch8: util-linux-lscpu-loop.patch -# PATCH-FIX-UPSTREAM util-linux-libmount-umount-a-segfault.patch sbrabec@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 sbrabec@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 sbrabec@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 sbrabec@suse.com -- chcpu: Properly count CPUs. -Patch12: util-linux-chcpu-cpu-count.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # %if %build_util_linux @@ -405,11 +381,11 @@ SMP systems. %endif %if %build_python_libmount %if %build_util_linux -%package -n python-libmount +%package -n python3-libmount Summary: %summary_pl Group: %group_pl -%description -n python-libmount +%description -n python3-libmount %else %description %endif @@ -420,18 +396,6 @@ library. %prep %setup -q -n %{_name}-%{version} -b 40 %patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 # # setctsid cp -p %{S:22} %{S:23} . @@ -674,7 +638,7 @@ install -Dm644 %{SOURCE42} %{buildroot}%{_unitdir}/rfkill-unblock@.service # util-linux install # %make_install -rm -f %{buildroot}%{python_sitearch}/libmount/*.*a +rm -f %{buildroot}%{python3_sitearch}/libmount/*.*a %if %build_util_linux #UsrMerge ln -s %{_bindir}/kill %{buildroot}/bin @@ -1376,12 +1340,12 @@ getent passwd uuidd >/dev/null || \ %if %build_python_libmount %if %build_util_linux -%files -n python-libmount +%files -n python3-libmount %else %files %endif %defattr(-, root, root) -%{python_sitearch}/libmount +%{python3_sitearch}/libmount %endif %changelog diff --git a/util-linux-2.31.1.tar.sign b/util-linux-2.31.1.tar.sign deleted file mode 100644 index a84d188..0000000 --- a/util-linux-2.31.1.tar.sign +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCAAdFiEEsMZNFDAcxu+u32Dk5LcdXuw5woQFAlo5LQkACgkQ5LcdXuw5 -woSyww//djBJmPc3Jvy7eJSVjC3xbFgro7wHaAM0BSFYgiW1aSsR04sSwGIEMtbv -EMOyF83qVKSoiWb57VOeJGSCWXUPkMPaTzretEyaD5IH3rHBDp7Q5oTUMlNmLnoT -q86oYBKNXox5bbLHPqpQaLUGGJWIjz9suRtT1Uau+ZKRudO3f9YZCJBnCkqTpqX+ -7TqPK53Gen1jw3u7kz1CRDMsTllfV1Gw+hhq8YI/xPApTLRIcBWq9DUVu9v5PHjQ -M8rh9d3693mgkhtPQAGShKpC8nz0013AOG8bJm0yL69YWlVdhFDR2DColxZE1nEe -3T7aZPZCseObHR1rqMUngKMD6B6D7XPfexWuWXRHgr7Aayz6S/IOYTvTjtBkgNri -KJ+QDn/6Xs5xTsWu6wSh7wXfjtwk7NuLY1pVo9pL3r4KmfIBbODwE80FKSqCwHJm -kI7J2QIiaKGWfry6vqrUgECGY48f1W0PNfgCbdJDW1HsVCvTaUiXfIc++HTxgxpv -6IcU1a4ikVT9zRMVE5ypgZPIkwSaGJgeV1YwCa9qanM3dx86D/DTzLVdr/Nhvn96 -uPdp287aebllU+O1QK/79q5pf/UcBofgNc9GsVgtqlKNYN+REuoqYsDQ/Sz12kor -SdF/tR3qtdTucdD/4fUcF2Uv8RLmc4cknZdz37ld6q0TSeyZShE= -=uflt ------END PGP SIGNATURE----- diff --git a/util-linux-2.31.1.tar.xz b/util-linux-2.31.1.tar.xz deleted file mode 100644 index 005e472..0000000 --- a/util-linux-2.31.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a51b16fa9cd51d26ef9ab52d2f1de12403b810fc8252bf7d478df91b3cddf11 -size 4510096 diff --git a/util-linux-2.32.1.tar.sign b/util-linux-2.32.1.tar.sign new file mode 100644 index 0000000..13ca0c5 --- /dev/null +++ b/util-linux-2.32.1.tar.sign @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEsMZNFDAcxu+u32Dk5LcdXuw5woQFAltMdfIACgkQ5LcdXuw5 +woRrBw//aQiUjq1kJ5ilwNxhuRHqCwltM8aIEsV5KxT2QG71ZSaAAJy/9+T9HTjW +/Olv2jzf2dOYsY0pZ7+mhXxiMe/Oh5IQcsoeq1AwefriMNf7CMwWmOqnR/ijSF1j +2Ij8wCpCkroqZj1o+YYX8paaDRpfany6yahSMbBCRD6SW+e1huMuSzMp2O6KRhMG +k8xR0Oxq+Ok4R2VW9gUrHAwDIu54D48h77Pcp9hZ4Jn86ay6i3VBvJ7AsZW62lUu +E1Qk4P/QIXk7W5PLAcbIdaznmSDfbJmnnDln9t269fq50IKyj/fp8oYkIO5VOVZL +PJJh7cn2uAGY5C8RCmpt6f5GpDDMVyn/K/5fSgRsYge1hRJ+Z3l/buCGr5jI3vjt +65UuFg7eKnqHLZEp7EVB7GlMjsKT83Pllz5tVvbmP/+wH4hihYEyxcmWkFvU/ZbC +xntvp4ciSEyXJNkNyPwhprjuUx47MqipkTXDE8OSW7LhfHcrCpDKVNBljxWhTKqP +UUGHq1nj18RtyNz9vRtwdLh0wDmyy2pNen12qcqLVRqoJAM05C1wl3eRwEKTvThz +ZXLEQGbuf7EIDh50hg/MXn9S4bVh4S9wnWfx5qgwGBMVZzUrAWJ7c+SLWocvaEOQ +LoYOKTVelY12+yPUNBHmNQl3e6dtFu+e9kRRc08whdNdIi6ILBw= +=PX83 +-----END PGP SIGNATURE----- diff --git a/util-linux-2.32.1.tar.xz b/util-linux-2.32.1.tar.xz new file mode 100644 index 0000000..7f877ec --- /dev/null +++ b/util-linux-2.32.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86e6707a379c7ff5489c218cfaf1e3464b0b95acf7817db0bc5f179e356a67b2 +size 4561088 diff --git a/util-linux-chcpu-cpu-count.patch b/util-linux-chcpu-cpu-count.patch deleted file mode 100644 index 31255b6..0000000 --- a/util-linux-chcpu-cpu-count.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 607274943bfd3d4856b872bc4278b36903fb2182 Mon Sep 17 00:00:00 2001 -From: Stanislav Brabec -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 -Cc: Michael Matz -Cc: Heiko Carstens ---- - 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 - diff --git a/util-linux-cramfs.patch b/util-linux-cramfs.patch deleted file mode 100644 index fd3a008..0000000 --- a/util-linux-cramfs.patch +++ /dev/null @@ -1,406 +0,0 @@ -commit 68ac426949170bb3802a6d610f366f24aa0bb734 -Author: Ruediger Meier -Date: Tue Jan 23 16:59:25 2018 +0100 - - fsck.cramfs: fix error message - - errno is invalid in case that we just read(3) too short. - - Signed-off-by: Ruediger Meier - -commit c990f94cbcc68c7bab47458a09e361ce0791b6d8 -Author: Ruediger Meier -Date: Tue Jan 23 16:59:24 2018 +0100 - - tests: rewrite fsck-bad-header - - Fix test for systems with pagesize != 4096 - Loop over many combinations of sizes, endianness and blocksizes. - - Signed-off-by: Ruediger Meier - -commit 2374b1ab75c66c9ecea86fc97abb6d6c048bcf45 -Author: Ruediger Meier -Date: Tue Jan 23 16:59:23 2018 +0100 - - fsck.cramfs: fix crash when superblock size is too small - - This hopefully fixes the original problem addressed by the reverted - patch 7cb962c7. - - The bug was introduced by myself in - f991dbd3 "fsck.cramfs: allow smaller superblock sizes" - - CC: Tobias Stoeckmann - Signed-off-by: Ruediger Meier - -commit 919e372da872bcc37502783e80564654569edb22 -Author: Ruediger Meier -Date: Tue Jan 23 16:59:22 2018 +0100 - - Revert "fsck.cramfs: Fix bus error on broken file system." - - This reverts commit 7cb962c77015e9383b53eeb22ce732cb5216bbc3. - - It can't be right that we mmap (start + super.size) bytes from a file - which is usually only super.size bytes large. The patch "fixed" a - problem when super.size is bad but now it fails for the correct case: - - $ mkdir -p root/subdir - $ ./mkfs.cramfs -p root cramfs - $ ./fsck.cramfs cramfs - Bus error (core dumped) - - We will fix the original problem later. - - CC: Tobias Stoeckmann - Signed-off-by: Ruediger Meier - -diff -urN util-linux-2.31.1.orig/disk-utils/fsck.cramfs.c util-linux-2.31.1/disk-utils/fsck.cramfs.c ---- util-linux-2.31.1.orig/disk-utils/fsck.cramfs.c 2017-12-14 15:26:35.141144200 +0100 -+++ util-linux-2.31.1/disk-utils/fsck.cramfs.c 2018-01-26 18:41:01.001095311 +0100 -@@ -192,7 +192,7 @@ - errx(FSCK_EX_ERROR, _("unsupported filesystem features")); - - /* What are valid superblock sizes? */ -- if (super.size < sizeof(struct cramfs_super)) -+ if (super.size < *start + sizeof(struct cramfs_super)) - errx(FSCK_EX_UNCORRECTED, _("superblock size (%d) too small"), - super.size); - -@@ -220,24 +220,28 @@ - crc = crc32(0L, NULL, 0); - - buf = -- mmap(NULL, start + super.size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); -+ mmap(NULL, super.size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); - if (buf == MAP_FAILED) { - buf = -- mmap(NULL, start + super.size, PROT_READ | PROT_WRITE, -+ mmap(NULL, super.size, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - if (buf != MAP_FAILED) { -- if (lseek(fd, start, SEEK_SET) == (off_t) -1) -+ ssize_t tmp; -+ if (lseek(fd, 0, SEEK_SET) == (off_t) -1) - err(FSCK_EX_ERROR, _("seek on %s failed"), filename); -- if (read(fd, (unsigned char *) buf + start, super.size) != -- (ssize_t) super.size) -+ tmp = read(fd, buf, super.size); -+ if (tmp < 0) - err(FSCK_EX_ERROR, _("cannot read %s"), filename); -+ if (tmp != (ssize_t) super.size) -+ errx(FSCK_EX_ERROR, _("failed to read %"PRIu32" bytes from file %s"), -+ super.size, filename); - } - } - if (buf != MAP_FAILED) { - ((struct cramfs_super *)((unsigned char *) buf + start))->fsid.crc = - crc32(0L, NULL, 0); -- crc = crc32(crc, (unsigned char *) buf + start, super.size); -- munmap(buf, start + super.size); -+ crc = crc32(crc, (unsigned char *) buf + start, super.size - start); -+ munmap(buf, super.size); - } else { - int retval; - size_t length = 0; -diff -urN util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header ---- util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header 2017-12-14 15:26:46.585066844 +0100 -+++ util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header 1970-01-01 01:00:00.000000000 +0100 -@@ -1,2 +0,0 @@ --fsck.cramfs: file extends past end of filesystem --fsck.cramfs: crc error -diff -urN util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-nopad-4K-be util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-nopad-4K-be ---- util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-nopad-4K-be 1970-01-01 01:00:00.000000000 +0100 -+++ util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-nopad-4K-be 2018-01-26 18:40:57.401031690 +0100 -@@ -0,0 +1,29 @@ -+## size: 0 -+fsck.cramfs: superblock size (0) too small -+ret: 4 -+ -+## size: 75 -+fsck.cramfs: superblock size (75) too small -+ret: 4 -+ -+## size: 76 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 4095 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 4096 -+ret: 0 -+ -+## size: 4097 -+fsck.cramfs: file length too short -+ret: 4 -+ -+## size: 4294967295 -+fsck.cramfs: file length too short -+ret: 4 -+ -diff -urN util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-nopad-4K-le util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-nopad-4K-le ---- util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-nopad-4K-le 1970-01-01 01:00:00.000000000 +0100 -+++ util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-nopad-4K-le 2018-01-26 18:40:57.401031690 +0100 -@@ -0,0 +1,29 @@ -+## size: 0 -+fsck.cramfs: superblock size (0) too small -+ret: 4 -+ -+## size: 75 -+fsck.cramfs: superblock size (75) too small -+ret: 4 -+ -+## size: 76 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 4095 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 4096 -+ret: 0 -+ -+## size: 4097 -+fsck.cramfs: file length too short -+ret: 4 -+ -+## size: 4294967295 -+fsck.cramfs: file length too short -+ret: 4 -+ -diff -urN util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-pad-4K-be util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-pad-4K-be ---- util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-pad-4K-be 1970-01-01 01:00:00.000000000 +0100 -+++ util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-pad-4K-be 2018-01-26 18:40:57.401031690 +0100 -@@ -0,0 +1,29 @@ -+## size: 76 -+fsck.cramfs: superblock size (76) too small -+ret: 4 -+ -+## size: 587 -+fsck.cramfs: superblock size (587) too small -+ret: 4 -+ -+## size: 588 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 4095 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 4096 -+ret: 0 -+ -+## size: 4097 -+fsck.cramfs: file length too short -+ret: 4 -+ -+## size: 4294967295 -+fsck.cramfs: file length too short -+ret: 4 -+ -diff -urN util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-pad-4K-le util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-pad-4K-le ---- util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-pad-4K-le 1970-01-01 01:00:00.000000000 +0100 -+++ util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-pad-4K-le 2018-01-26 18:40:57.401031690 +0100 -@@ -0,0 +1,29 @@ -+## size: 76 -+fsck.cramfs: superblock size (76) too small -+ret: 4 -+ -+## size: 587 -+fsck.cramfs: superblock size (587) too small -+ret: 4 -+ -+## size: 588 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 4095 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 4096 -+ret: 0 -+ -+## size: 4097 -+fsck.cramfs: file length too short -+ret: 4 -+ -+## size: 4294967295 -+fsck.cramfs: file length too short -+ret: 4 -+ -diff -urN util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-pad-64K-be util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-pad-64K-be ---- util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-pad-64K-be 1970-01-01 01:00:00.000000000 +0100 -+++ util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-pad-64K-be 2018-01-26 18:40:57.401031690 +0100 -@@ -0,0 +1,29 @@ -+## size: 76 -+fsck.cramfs: superblock size (76) too small -+ret: 4 -+ -+## size: 587 -+fsck.cramfs: superblock size (587) too small -+ret: 4 -+ -+## size: 588 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 65535 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 65536 -+ret: 0 -+ -+## size: 65537 -+fsck.cramfs: file length too short -+ret: 4 -+ -+## size: 4294967295 -+fsck.cramfs: file length too short -+ret: 4 -+ -diff -urN util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-pad-64K-le util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-pad-64K-le ---- util-linux-2.31.1.orig/tests/expected/cramfs/fsck-bad-header-pad-64K-le 1970-01-01 01:00:00.000000000 +0100 -+++ util-linux-2.31.1/tests/expected/cramfs/fsck-bad-header-pad-64K-le 2018-01-26 18:40:57.401031690 +0100 -@@ -0,0 +1,29 @@ -+## size: 76 -+fsck.cramfs: superblock size (76) too small -+ret: 4 -+ -+## size: 587 -+fsck.cramfs: superblock size (587) too small -+ret: 4 -+ -+## size: 588 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 65535 -+fsck.cramfs: file extends past end of filesystem -+fsck.cramfs: crc error -+ret: 4 -+ -+## size: 65536 -+ret: 0 -+ -+## size: 65537 -+fsck.cramfs: file length too short -+ret: 4 -+ -+## size: 4294967295 -+fsck.cramfs: file length too short -+ret: 4 -+ -diff -urN util-linux-2.31.1.orig/tests/ts/cramfs/fsck-bad-header util-linux-2.31.1/tests/ts/cramfs/fsck-bad-header ---- util-linux-2.31.1.orig/tests/ts/cramfs/fsck-bad-header 2017-12-14 15:26:46.585066844 +0100 -+++ util-linux-2.31.1/tests/ts/cramfs/fsck-bad-header 2018-01-26 18:40:57.401031690 +0100 -@@ -16,7 +16,7 @@ - # GNU General Public License for more details. - # - TS_TOPDIR="${0%/*}/../.." --TS_DESC="fsck endianness" -+TS_DESC="fsck bad header" - - . $TS_TOPDIR/functions.sh - ts_init "$*" -@@ -25,14 +25,78 @@ - ts_check_test_command "$TS_CMD_FSCKCRAMFS" - ts_check_prog "dd" - --IMAGE_SOURCE="$TS_OUTDIR/${TS_TESTNAME}-data/root" -+function num2binary() -+{ -+ local num=$1 -+ local endian=$2 -+ -+ test "$num" -ge 0 -a "$num" -le 4294967295 || return 1 -+ test "$endian" = "be" -o "$endian" = "le" || return 1 -+ -+ # how to do that easier? -+ if test "$endian" = "be"; then -+ echo -en "$(printf "%08x" "$1" | sed 's/\(..\)/\\x\1/g')" -+ else -+ echo -en "$(printf "%08x" "$1" | sed 's/^\(..\)\(..\)\(..\)\(..\)$/\\x\4\\x\3\\x\2\\x\1/')" -+ fi -+} -+ -+function fsck_loop_sizes() -+{ -+ local endian=$1 # be, le -+ local seek=$2 # 4 for nopad, 516 for pad -+ shift 2 # the rest are sizes to loop over -+ -+ for size in "$@"; do -+ ts_log "## size: $size" -+ cp -a "$IMAGE_FILE" "$IMAGE_FILE.tmp" -+ num2binary "$size" $endian | -+ dd of="$IMAGE_FILE.tmp" bs=1 seek="$seek" count=4 conv=notrunc &> /dev/null -+ $TS_CMD_FSCKCRAMFS "$IMAGE_FILE.tmp" >> $TS_OUTPUT 2>&1 -+ ts_log "ret: $? -+" -+ done -+ rm -f "$IMAGE_FILE" -+} -+ -+ -+IMAGE_SOURCE="$TS_OUTDIR/${TS_TESTNAME}-data" - IMAGE_FILE="$TS_OUTDIR/${TS_TESTNAME}-cramfs.img" - - mkdir -p "${IMAGE_SOURCE}/subdir" &> /dev/null --$TS_CMD_MKCRAMFS -p -N big $IMAGE_SOURCE $IMAGE_FILE &> /dev/null --echo -ne \\00\\x4c | -- dd of=$IMAGE_FILE bs=1 seek=518 count=2 conv=notrunc &> /dev/null --$TS_CMD_FSCKCRAMFS $IMAGE_FILE >> $TS_OUTPUT 2>&1 -+ -+ts_init_subtest "nopad-4K-be" -+$TS_CMD_MKCRAMFS -N big -b 4096 $IMAGE_SOURCE $IMAGE_FILE &> /dev/null -+fsck_loop_sizes be 4 0 75 76 4095 4096 4097 4294967295 -+rm -f "$IMAGE_FILE" -+ts_finalize_subtest -+ -+ts_init_subtest "nopad-4K-le" -+$TS_CMD_MKCRAMFS -N little -b 4096 $IMAGE_SOURCE $IMAGE_FILE &> /dev/null -+fsck_loop_sizes le 4 0 75 76 4095 4096 4097 4294967295 -+ts_finalize_subtest -+ -+ts_init_subtest "pad-4K-be" -+$TS_CMD_MKCRAMFS -p -N big -b 4096 $IMAGE_SOURCE $IMAGE_FILE &> /dev/null -+fsck_loop_sizes be 516 76 587 588 4095 4096 4097 4294967295 -+ts_finalize_subtest -+ -+ts_init_subtest "pad-4K-le" -+$TS_CMD_MKCRAMFS -p -N little -b 4096 $IMAGE_SOURCE $IMAGE_FILE &> /dev/null -+fsck_loop_sizes le 516 76 587 588 4095 4096 4097 4294967295 -+ts_finalize_subtest -+ -+ts_init_subtest "pad-64K-be" -+$TS_CMD_MKCRAMFS -p -N big -b 65536 $IMAGE_SOURCE $IMAGE_FILE &> /dev/null -+fsck_loop_sizes be 516 76 587 588 65535 65536 65537 4294967295 -+ts_finalize_subtest -+ -+ts_init_subtest "pad-64K-le" -+$TS_CMD_MKCRAMFS -p -N little -b 65536 $IMAGE_SOURCE $IMAGE_FILE &> /dev/null -+fsck_loop_sizes le 516 76 587 588 65535 65536 65537 4294967295 -+ts_finalize_subtest -+ -+rm -rf "$IMAGE_SOURCE" "$IMAGE_FILE.tmp" - - ts_finalize - diff --git a/util-linux-fincore-count.patch b/util-linux-fincore-count.patch deleted file mode 100644 index b7a79a7..0000000 --- a/util-linux-fincore-count.patch +++ /dev/null @@ -1,34 +0,0 @@ -commit 839203c00ecb6b3dffd0d3eb8c77dac87584c241 -Author: Ruediger Meier -Date: Tue Jan 23 16:59:27 2018 +0100 - - tests: fix fincore/count KNOWN_FAIL - - It has to be set after calling ts_init. - - Signed-off-by: Ruediger Meier - -commit 88e5d289d5dcec3dfb7bc8f8fac89ce789e69d3f -Author: Karel Zak -Date: Wed Jan 17 14:41:56 2018 +0100 - - tests: mark fincore/count as KNOWN_FAIL - - The test (or our expectations about Direct-IO) seems not robust - enough. I guess this is not fincore problem. - - Signed-off-by: Karel Zak - -diff -urN util-linux-2.31.1.orig/tests/ts/fincore/count util-linux-2.31.1/tests/ts/fincore/count ---- util-linux-2.31.1.orig/tests/ts/fincore/count 2017-11-23 13:42:05.508423452 +0100 -+++ util-linux-2.31.1/tests/ts/fincore/count 2018-01-31 20:33:12.838715727 +0100 -@@ -8,6 +8,9 @@ - - ts_check_test_command "$TS_HELPER_SYSINFO" - -+# Send patch if you know how to keep it portable and robust. Thanks. -+TS_KNOWN_FAIL="yes" -+ - function header - { - echo "[" "$1" "]" diff --git a/util-linux-libmount-mount-a-nfs-bind-mount.patch b/util-linux-libmount-mount-a-nfs-bind-mount.patch deleted file mode 100644 index 22730b5..0000000 --- a/util-linux-libmount-mount-a-nfs-bind-mount.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 7966cbba53890e1010861b75bd9923e793bbc975 Mon Sep 17 00:00:00 2001 -From: NeilBrown -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. - -[kzak@redhat.com: - use strappend() rather than asprintf()] - -Signed-off-by: NeilBrown -Signed-off-by: Karel Zak ---- - 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 - diff --git a/util-linux-libmount-umount-a-segfault.patch b/util-linux-libmount-umount-a-segfault.patch deleted file mode 100644 index c7ac007..0000000 --- a/util-linux-libmount-umount-a-segfault.patch +++ /dev/null @@ -1,34 +0,0 @@ -From f958101d2ea55174f8cd584efe41d4cefa9578c6 Mon Sep 17 00:00:00 2001 -From: Richard Fuchs -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 - diff --git a/util-linux-lscpu-chcpu-new-cpu-macros.patch b/util-linux-lscpu-chcpu-new-cpu-macros.patch deleted file mode 100644 index a555cd3..0000000 --- a/util-linux-lscpu-chcpu-new-cpu-macros.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 538b50cb0a4aac56b6b3b6e4d1e8ce886854c6d8 Mon Sep 17 00:00:00 2001 -From: Stanislav Brabec -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 -Cc: Michael Matz ---- - 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 - diff --git a/util-linux-lscpu-loop.patch b/util-linux-lscpu-loop.patch deleted file mode 100644 index 116a58e..0000000 --- a/util-linux-lscpu-loop.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 95f09bc63c564c50ec2c393352801cc056faaea2 Mon Sep 17 00:00:00 2001 -From: Dirk Mueller -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 - diff --git a/util-linux-lsmem-memory-zone-1.patch b/util-linux-lsmem-memory-zone-1.patch deleted file mode 100644 index a0e2db9..0000000 --- a/util-linux-lsmem-memory-zone-1.patch +++ /dev/null @@ -1,536 +0,0 @@ -From 60a7e9e94e49215b1e6ac6e33b69c3bd0a426b5e Mon Sep 17 00:00:00 2001 -From: Gerald Schaefer -Date: Wed, 27 Sep 2017 19:44:44 +0200 -Subject: [PATCH 1/3] lsmem/chmem: add memory zone awareness - -With this patch, valid memory zones can be shown with lsmem, and chmem can -set memory online/offline in a specific memory zone, if allowed by the -kernel. The valid memory zones are read from the "valid_zones" sysfs -attribute, and setting memory online to a specific zone is done by -echoing "online_kernel" or "online_movable" to the "state" sysfs -attribute, in addition to the previous "online". - -This patch also changes the default behavior of chmem, when setting memory -online without specifying a memory zone. If valid, memory will be set -online to the zone Movable. This zone is preferable for memory hotplug, as -it makes memory offline much more likely to succeed. - -Signed-off-by: Gerald Schaefer ---- - sys-utils/chmem.8 | 19 ++++++++ - sys-utils/chmem.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++---- - sys-utils/lsmem.1 | 4 +- - sys-utils/lsmem.c | 98 ++++++++++++++++++++++++++++++++++++++- - 4 files changed, 246 insertions(+), 11 deletions(-) - -diff --git a/sys-utils/chmem.8 b/sys-utils/chmem.8 -index a116bc9e7..dae7413d4 100644 ---- a/sys-utils/chmem.8 -+++ b/sys-utils/chmem.8 -@@ -5,6 +5,7 @@ chmem \- configure memory - .B chmem - .RB [ \-h "] [" \-V "] [" \-v "] [" \-e | \-d "]" - [\fISIZE\fP|\fIRANGE\fP|\fB\-b\fP \fIBLOCKRANGE\fP] -+[-z ZONE] - .SH DESCRIPTION - The chmem command sets a particular size or range of memory online or offline. - . -@@ -25,6 +26,19 @@ and is the number of the last memory block in the memory - range. Alternatively a single block can be specified. \fIBLOCKRANGE\fP requires - the \fB--blocks\fP option. - . -+.IP "\(hy" 2 -+Specify \fIZONE\fP as the name of a memory zone, as shown in the output of the -+\fBlsmem -o +ZONES\fP command. The output shows one or more valid memory zones -+for each memory range. If multiple zones are shown, then the memory range -+currently belongs to the first zone. By default, chmem will set memory online -+to the zone Movable, if this is among the valid zones. This default can be -+changed by specifying the \fB--zone\fP option with another valid zone. -+For memory ballooning, it is recommended to select the zone Movable for memory -+online and offline, if possible. Memory in this zone is much more likely to be -+able to be offlined again, but it cannot be used for arbitrary kernel -+allocations, only for migratable pages (e.g. anonymous and page cache pages). -+Use the \fB\-\-help\fR option to see all available zones. -+. - .PP - \fISIZE\fP and \fIRANGE\fP must be aligned to the Linux memory block size, as - shown in the output of the \fBlsmem\fP command. -@@ -51,6 +65,11 @@ Set the specified \fIRANGE\fP, \fISIZE\fP, or \fIBLOCKRANGE\fP of memory offline - .BR \-e ", " \-\-enable - Set the specified \fIRANGE\fP, \fISIZE\fP, or \fIBLOCKRANGE\fP of memory online. - .TP -+.BR \-z ", " \-\-zone -+Select the memory \fIZONE\fP where to set the specified \fIRANGE\fP, \fISIZE\fP, -+or \fIBLOCKRANGE\fP of memory online or offline. By default, memory will be set -+online to the zone Movable, if possible. -+.TP - .BR \-h ", " \-\-help - Print a short help text, then exit. - .TP -diff --git a/sys-utils/chmem.c b/sys-utils/chmem.c -index d9bc95cc1..2f0680de8 100644 ---- a/sys-utils/chmem.c -+++ b/sys-utils/chmem.c -@@ -49,6 +49,7 @@ struct chmem_desc { - unsigned int use_blocks : 1; - unsigned int is_size : 1; - unsigned int verbose : 1; -+ unsigned int have_zones : 1; - }; - - enum { -@@ -57,6 +58,38 @@ enum { - CMD_NONE - }; - -+enum zone_id { -+ ZONE_DMA = 0, -+ ZONE_DMA32, -+ ZONE_NORMAL, -+ ZONE_HIGHMEM, -+ ZONE_MOVABLE, -+ ZONE_DEVICE, -+}; -+ -+static char *zone_names[] = { -+ [ZONE_DMA] = "DMA", -+ [ZONE_DMA32] = "DMA32", -+ [ZONE_NORMAL] = "Normal", -+ [ZONE_HIGHMEM] = "Highmem", -+ [ZONE_MOVABLE] = "Movable", -+ [ZONE_DEVICE] = "Device", -+}; -+ -+/* -+ * name must be null-terminated -+ */ -+static int zone_name_to_id(const char *name) -+{ -+ size_t i; -+ -+ for (i = 0; i < ARRAY_SIZE(zone_names); i++) { -+ if (!strcasecmp(name, zone_names[i])) -+ return i; -+ } -+ return -1; -+} -+ - static void idxtostr(struct chmem_desc *desc, uint64_t idx, char *buf, size_t bufsz) - { - uint64_t start, end; -@@ -68,22 +101,49 @@ static void idxtostr(struct chmem_desc *desc, uint64_t idx, char *buf, size_t bu - idx, start, end); - } - --static int chmem_size(struct chmem_desc *desc, int enable) -+static int chmem_size(struct chmem_desc *desc, int enable, int zone_id) - { - char *name, *onoff, line[BUFSIZ], str[BUFSIZ]; - uint64_t size, index; -+ const char *zn; - int i, rc; - - size = desc->size; - onoff = enable ? "online" : "offline"; - i = enable ? 0 : desc->ndirs - 1; - -+ if (enable && zone_id >= 0) { -+ if (zone_id == ZONE_MOVABLE) -+ onoff = "online_movable"; -+ else -+ onoff = "online_kernel"; -+ } -+ - for (; i >= 0 && i < desc->ndirs && size; i += enable ? 1 : -1) { - name = desc->dirs[i]->d_name; - index = strtou64_or_err(name + 6, _("Failed to parse index")); - path_read_str(line, sizeof(line), _PATH_SYS_MEMORY "/%s/state", name); -- if (strcmp(onoff, line) == 0) -+ if (strncmp(onoff, line, 6) == 0) - continue; -+ -+ if (desc->have_zones) { -+ path_read_str(line, sizeof(line), -+ _PATH_SYS_MEMORY "/%s/valid_zones", name); -+ if (zone_id >= 0) { -+ zn = zone_names[zone_id]; -+ if (enable && !strcasestr(line, zn)) -+ continue; -+ if (!enable && strncasecmp(line, zn, strlen(zn))) -+ continue; -+ } else if (enable) { -+ /* By default, use zone Movable for online, if valid */ -+ if (strcasestr(line, zone_names[ZONE_MOVABLE])) -+ onoff = "online_movable"; -+ else -+ onoff = "online"; -+ } -+ } -+ - idxtostr(desc, index, str, sizeof(str)); - rc = path_write_str(onoff, _PATH_SYS_MEMORY"/%s/state", name); - if (rc == -1 && desc->verbose) { -@@ -115,15 +175,23 @@ static int chmem_size(struct chmem_desc *desc, int enable) - return size == 0 ? 0 : size == desc->size ? -1 : 1; - } - --static int chmem_range(struct chmem_desc *desc, int enable) -+static int chmem_range(struct chmem_desc *desc, int enable, int zone_id) - { - char *name, *onoff, line[BUFSIZ], str[BUFSIZ]; - uint64_t index, todo; -+ const char *zn; - int i, rc; - - todo = desc->end - desc->start + 1; - onoff = enable ? "online" : "offline"; - -+ if (enable && zone_id >= 0) { -+ if (zone_id == ZONE_MOVABLE) -+ onoff = "online_movable"; -+ else -+ onoff = "online_kernel"; -+ } -+ - for (i = 0; i < desc->ndirs; i++) { - name = desc->dirs[i]->d_name; - index = strtou64_or_err(name + 6, _("Failed to parse index")); -@@ -133,7 +201,7 @@ static int chmem_range(struct chmem_desc *desc, int enable) - break; - idxtostr(desc, index, str, sizeof(str)); - path_read_str(line, sizeof(line), _PATH_SYS_MEMORY "/%s/state", name); -- if (strcmp(onoff, line) == 0) { -+ if (strncmp(onoff, line, 6) == 0) { - if (desc->verbose && enable) - fprintf(stdout, _("%s already enabled\n"), str); - else if (desc->verbose && !enable) -@@ -141,6 +209,29 @@ static int chmem_range(struct chmem_desc *desc, int enable) - todo--; - continue; - } -+ -+ if (desc->have_zones) { -+ path_read_str(line, sizeof(line), -+ _PATH_SYS_MEMORY "/%s/valid_zones", name); -+ if (zone_id >= 0) { -+ zn = zone_names[zone_id]; -+ if (enable && !strcasestr(line, zn)) { -+ warnx(_("%s enable failed: Zone mismatch"), str); -+ continue; -+ } -+ if (!enable && strncasecmp(line, zn, strlen(zn))) { -+ warnx(_("%s disable failed: Zone mismatch"), str); -+ continue; -+ } -+ } else if (enable) { -+ /* By default, use zone Movable for online, if valid */ -+ if (strcasestr(line, zone_names[ZONE_MOVABLE])) -+ onoff = "online_movable"; -+ else -+ onoff = "online"; -+ } -+ } -+ - rc = path_write_str(onoff, _PATH_SYS_MEMORY"/%s/state", name); - if (rc == -1) { - if (enable) -@@ -237,6 +328,8 @@ static void parse_parameter(struct chmem_desc *desc, char *param) - static void __attribute__((__noreturn__)) usage(void) - { - FILE *out = stdout; -+ unsigned int i; -+ - fputs(USAGE_HEADER, out); - fprintf(out, _(" %s [options] [SIZE|RANGE|BLOCKRANGE]\n"), program_invocation_short_name); - -@@ -247,6 +340,14 @@ static void __attribute__((__noreturn__)) usage(void) - fputs(_(" -e, --enable enable memory\n"), out); - fputs(_(" -d, --disable disable memory\n"), out); - fputs(_(" -b, --blocks use memory blocks\n"), out); -+ fputs(_(" -z, --zone select memory zone ("), out); -+ for (i = 0; i < ARRAY_SIZE(zone_names); i++) { -+ fputs(zone_names[i], out); -+ if (i < ARRAY_SIZE(zone_names) - 1) -+ fputc('|', out); -+ } -+ fputs(")\n", out); -+ - fputs(_(" -v, --verbose verbose output\n"), out); - fputs(USAGE_SEPARATOR, out); - printf(USAGE_HELP_OPTIONS(16)); -@@ -259,7 +360,8 @@ static void __attribute__((__noreturn__)) usage(void) - int main(int argc, char **argv) - { - struct chmem_desc _desc = { }, *desc = &_desc; -- int cmd = CMD_NONE; -+ int cmd = CMD_NONE, zone_id = -1; -+ char *zone = NULL; - int c, rc; - - static const struct option longopts[] = { -@@ -269,6 +371,7 @@ int main(int argc, char **argv) - {"help", no_argument, NULL, 'h'}, - {"verbose", no_argument, NULL, 'v'}, - {"version", no_argument, NULL, 'V'}, -+ {"zone", required_argument, NULL, 'z'}, - {NULL, 0, NULL, 0} - }; - -@@ -285,7 +388,7 @@ int main(int argc, char **argv) - - read_info(desc); - -- while ((c = getopt_long(argc, argv, "bdehvV", longopts, NULL)) != -1) { -+ while ((c = getopt_long(argc, argv, "bdehvVz:", longopts, NULL)) != -1) { - - err_exclusive_options(c, longopts, excl, excl_st); - -@@ -308,6 +411,9 @@ int main(int argc, char **argv) - case 'V': - printf(UTIL_LINUX_VERSION); - return EXIT_SUCCESS; -+ case 'z': -+ zone = xstrdup(optarg); -+ break; - default: - errtryhelp(EXIT_FAILURE); - } -@@ -320,10 +426,24 @@ int main(int argc, char **argv) - - parse_parameter(desc, argv[optind]); - -+ /* The valid_zones sysfs attribute was introduced with kernel 3.18 */ -+ if (path_exist(_PATH_SYS_MEMORY "/memory0/valid_zones")) -+ desc->have_zones = 1; -+ else if (zone) -+ warnx(_("zone ignored, no valid_zones sysfs attribute present")); -+ -+ if (zone && desc->have_zones) { -+ zone_id = zone_name_to_id(zone); -+ if (zone_id == -1) { -+ warnx(_("unknown memory zone: %s"), zone); -+ errtryhelp(EXIT_FAILURE); -+ } -+ } -+ - if (desc->is_size) -- rc = chmem_size(desc, cmd == CMD_MEMORY_ENABLE ? 1 : 0); -+ rc = chmem_size(desc, cmd == CMD_MEMORY_ENABLE ? 1 : 0, zone_id); - else -- rc = chmem_range(desc, cmd == CMD_MEMORY_ENABLE ? 1 : 0); -+ rc = chmem_range(desc, cmd == CMD_MEMORY_ENABLE ? 1 : 0, zone_id); - - return rc == 0 ? EXIT_SUCCESS : - rc < 0 ? EXIT_FAILURE : CHMEM_EXIT_SOMEOK; -diff --git a/sys-utils/lsmem.1 b/sys-utils/lsmem.1 -index be2862d94..e7df50a4e 100644 ---- a/sys-utils/lsmem.1 -+++ b/sys-utils/lsmem.1 -@@ -41,12 +41,12 @@ Do not print a header line. - .BR \-o , " \-\-output " \fIlist\fP - Specify which output columns to print. Use \fB\-\-help\fR - to get a list of all supported columns. -+The default list of columns may be extended if \fIlist\fP is -+specified in the format \fB+\fIlist\fP (e.g. \fBlsmem \-o +NODE\fP). - .TP - .BR \-P , " \-\-pairs" - Produce output in the form of key="value" pairs. - All potentially unsafe characters are hex-escaped (\\x). --The default list of columns may be extended if \fIlist\fP is --specified in the format \fB+\fIlist\fP (e.g. \fBlsmem \-o +NODE\fP). - .TP - .BR \-r , " \-\-raw" - Produce output in raw format. All potentially unsafe characters are hex-escaped -diff --git a/sys-utils/lsmem.c b/sys-utils/lsmem.c -index aeffd29dd..1d26579fd 100644 ---- a/sys-utils/lsmem.c -+++ b/sys-utils/lsmem.c -@@ -42,11 +42,25 @@ - #define MEMORY_STATE_GOING_OFFLINE 2 - #define MEMORY_STATE_UNKNOWN 3 - -+enum zone_id { -+ ZONE_DMA = 0, -+ ZONE_DMA32, -+ ZONE_NORMAL, -+ ZONE_HIGHMEM, -+ ZONE_MOVABLE, -+ ZONE_DEVICE, -+ ZONE_NONE, -+ ZONE_UNKNOWN, -+ MAX_NR_ZONES, -+}; -+ - struct memory_block { - uint64_t index; - uint64_t count; - int state; - int node; -+ int nr_zones; -+ int zones[MAX_NR_ZONES]; - unsigned int removable:1; - }; - -@@ -72,7 +86,9 @@ struct lsmem { - want_state : 1, - want_removable : 1, - want_summary : 1, -- want_table : 1; -+ want_table : 1, -+ want_zones : 1, -+ have_zones : 1; - }; - - enum { -@@ -82,6 +98,18 @@ enum { - COL_REMOVABLE, - COL_BLOCK, - COL_NODE, -+ COL_ZONES, -+}; -+ -+static char *zone_names[] = { -+ [ZONE_DMA] = "DMA", -+ [ZONE_DMA32] = "DMA32", -+ [ZONE_NORMAL] = "Normal", -+ [ZONE_HIGHMEM] = "Highmem", -+ [ZONE_MOVABLE] = "Movable", -+ [ZONE_DEVICE] = "Device", -+ [ZONE_NONE] = "None", /* block contains more than one zone, can't be offlined */ -+ [ZONE_UNKNOWN] = "Unknown", - }; - - /* column names */ -@@ -102,6 +130,7 @@ static struct coldesc coldescs[] = { - [COL_REMOVABLE] = { "REMOVABLE", 0, SCOLS_FL_RIGHT, N_("memory is removable")}, - [COL_BLOCK] = { "BLOCK", 0, SCOLS_FL_RIGHT, N_("memory block number or blocks range")}, - [COL_NODE] = { "NODE", 0, SCOLS_FL_RIGHT, N_("numa node of memory")}, -+ [COL_ZONES] = { "ZONES", 0, SCOLS_FL_RIGHT, N_("valid zones for the memory range")}, - }; - - /* columns[] array specifies all currently wanted output column. The columns -@@ -120,6 +149,20 @@ static inline size_t err_columns_index(size_t arysz, size_t idx) - return idx; - } - -+/* -+ * name must be null-terminated -+ */ -+static int zone_name_to_id(const char *name) -+{ -+ size_t i; -+ -+ for (i = 0; i < ARRAY_SIZE(zone_names); i++) { -+ if (!strcasecmp(name, zone_names[i])) -+ return i; -+ } -+ return ZONE_UNKNOWN; -+} -+ - #define add_column(ary, n, id) \ - ((ary)[ err_columns_index(ARRAY_SIZE(ary), (n)) ] = (id)) - -@@ -214,6 +257,25 @@ static void add_scols_line(struct lsmem *lsmem, struct memory_block *blk) - else - str = xstrdup("-"); - break; -+ case COL_ZONES: -+ if (lsmem->have_zones) { -+ char valid_zones[BUFSIZ]; -+ int j, zone_id; -+ -+ valid_zones[0] = '\0'; -+ for (j = 0; j < blk->nr_zones; j++) { -+ zone_id = blk->zones[j]; -+ if (strlen(valid_zones) + -+ strlen(zone_names[zone_id]) > BUFSIZ - 2) -+ break; -+ strcat(valid_zones, zone_names[zone_id]); -+ if (j + 1 < blk->nr_zones) -+ strcat(valid_zones, "/"); -+ } -+ str = xstrdup(valid_zones); -+ } else -+ str = xstrdup("-"); -+ break; - } - - if (str && scols_line_refer_data(line, i, str) != 0) -@@ -272,7 +334,9 @@ static int memory_block_get_node(char *name) - static void memory_block_read_attrs(struct lsmem *lsmem, char *name, - struct memory_block *blk) - { -+ char *token = NULL; - char line[BUFSIZ]; -+ int i; - - blk->count = 1; - blk->index = strtoumax(name + 6, NULL, 10); /* get of "memory" */ -@@ -287,11 +351,26 @@ static void memory_block_read_attrs(struct lsmem *lsmem, char *name, - blk->state = MEMORY_STATE_GOING_OFFLINE; - if (lsmem->have_nodes) - blk->node = memory_block_get_node(name); -+ -+ blk->nr_zones = 0; -+ if (lsmem->have_zones) { -+ path_read_str(line, sizeof(line), _PATH_SYS_MEMORY"/%s/%s", name, -+ "valid_zones"); -+ token = strtok(line, " "); -+ } -+ for (i = 0; i < MAX_NR_ZONES; i++) { -+ if (token) { -+ blk->zones[i] = zone_name_to_id(token); -+ blk->nr_zones++; -+ token = strtok(NULL, " "); -+ } -+ } - } - - static int is_mergeable(struct lsmem *lsmem, struct memory_block *blk) - { - struct memory_block *curr; -+ int i; - - if (!lsmem->nblocks) - return 0; -@@ -308,6 +387,15 @@ static int is_mergeable(struct lsmem *lsmem, struct memory_block *blk) - if (curr->node != blk->node) - return 0; - } -+ if (lsmem->want_zones && lsmem->have_zones) { -+ if (curr->nr_zones != blk->nr_zones) -+ return 0; -+ for (i = 0; i < curr->nr_zones; i++) { -+ if (curr->zones[i] == ZONE_UNKNOWN || -+ curr->zones[i] != blk->zones[i]) -+ return 0; -+ } -+ } - return 1; - } - -@@ -362,6 +450,12 @@ static void read_basic_info(struct lsmem *lsmem) - - if (memory_block_get_node(lsmem->dirs[0]->d_name) != -1) - lsmem->have_nodes = 1; -+ -+ /* The valid_zones sysfs attribute was introduced with kernel 3.18 */ -+ if (path_exist(_PATH_SYS_MEMORY "/memory0/valid_zones")) -+ lsmem->have_zones = 1; -+ else if (lsmem->want_zones) -+ warnx(_("Cannot read zones, no valid_zones sysfs attribute present")); - } - - static void __attribute__((__noreturn__)) usage(void) -@@ -553,6 +647,8 @@ int main(int argc, char **argv) - lsmem->want_node = 1; - if (has_column(COL_REMOVABLE)) - lsmem->want_removable = 1; -+ if (has_column(COL_ZONES)) -+ lsmem->want_zones = 1; - - /* - * Read data and print output --- -2.15.0 - diff --git a/util-linux-lsmem-memory-zone-2.patch b/util-linux-lsmem-memory-zone-2.patch deleted file mode 100644 index db965b4..0000000 --- a/util-linux-lsmem-memory-zone-2.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 0a4320f5e785e82337c3a657c55651004e3fd08d Mon Sep 17 00:00:00 2001 -From: Gerald Schaefer -Date: Wed, 27 Sep 2017 19:44:45 +0200 -Subject: [PATCH 2/3] tests/lsmem: update lsmem test with ZONES column - -The existing s390 and x86_64 dumps already contain the valid_zones sysfs -attribute, so just add a new "lsmem -o +ZONES" test command and update -the expected results. - -Signed-off-by: Gerald Schaefer ---- - tests/expected/lsmem/lsmem-s390-zvm-6g | 21 ++++++++++++++++++ - tests/expected/lsmem/lsmem-x86_64-16g | 39 ++++++++++++++++++++++++++++++++++ - tests/ts/lsmem/lsmem | 1 + - 3 files changed, 61 insertions(+) - -diff --git a/tests/expected/lsmem/lsmem-s390-zvm-6g b/tests/expected/lsmem/lsmem-s390-zvm-6g -index 05af40d4d..9f4c805ad 100644 ---- a/tests/expected/lsmem/lsmem-s390-zvm-6g -+++ b/tests/expected/lsmem/lsmem-s390-zvm-6g -@@ -106,3 +106,24 @@ $ lsmem --json --output RANGE,SIZE,STATE,REMOVABLE,BLOCK,NODE - {"range": "0x0000000140000000-0x000000017fffffff", "size": "1G", "state": "offline", "removable": "-", "block": "20-23", "node": "0"} - ] - } -+ -+--- -+ -+$ lsmem -o +ZONES -+RANGE SIZE STATE REMOVABLE BLOCK ZONES -+0x0000000000000000-0x000000006fffffff 1.8G online yes 0-6 DMA -+0x0000000070000000-0x000000007fffffff 256M online no 7 DMA/Normal -+0x0000000080000000-0x000000009fffffff 512M online yes 8-9 Normal -+0x00000000a0000000-0x00000000bfffffff 512M online no 10-11 Normal -+0x00000000c0000000-0x00000000dfffffff 512M online yes 12-13 Normal -+0x00000000e0000000-0x00000000efffffff 256M offline - 14 Normal -+0x00000000f0000000-0x00000000ffffffff 256M online yes 15 Normal -+0x0000000100000000-0x000000010fffffff 256M online no 16 Normal -+0x0000000110000000-0x000000011fffffff 256M online no 17 Normal/Movable -+0x0000000120000000-0x000000012fffffff 256M online yes 18 Movable/Normal -+0x0000000130000000-0x000000013fffffff 256M online yes 19 Movable -+0x0000000140000000-0x000000017fffffff 1G offline - 20-23 Movable -+ -+Memory block size: 256M -+Total online memory: 4.8G -+Total offline memory: 1.3G -diff --git a/tests/expected/lsmem/lsmem-x86_64-16g b/tests/expected/lsmem/lsmem-x86_64-16g -index 14d7d84f6..40316a584 100644 ---- a/tests/expected/lsmem/lsmem-x86_64-16g -+++ b/tests/expected/lsmem/lsmem-x86_64-16g -@@ -269,3 +269,42 @@ $ lsmem --json --output RANGE,SIZE,STATE,REMOVABLE,BLOCK,NODE - {"range": "0x0000000438000000-0x000000043fffffff", "size": "128M", "state": "online", "removable": "no", "block": "135", "node": "0"} - ] - } -+ -+--- -+ -+$ lsmem -o +ZONES -+RANGE SIZE STATE REMOVABLE BLOCK ZONES -+0x0000000000000000-0x0000000007ffffff 128M online no 0 None -+0x0000000008000000-0x0000000037ffffff 768M online yes 1-6 DMA32 -+0x0000000038000000-0x000000003fffffff 128M online no 7 DMA32 -+0x0000000040000000-0x0000000077ffffff 896M online yes 8-14 DMA32 -+0x0000000078000000-0x000000007fffffff 128M online no 15 DMA32 -+0x0000000080000000-0x00000000afffffff 768M online yes 16-21 DMA32 -+0x00000000b0000000-0x00000000bfffffff 256M online no 22-23 DMA32 -+0x0000000100000000-0x00000001a7ffffff 2.6G online no 32-52 Normal -+0x00000001a8000000-0x00000001afffffff 128M online yes 53 Normal -+0x00000001b0000000-0x00000001bfffffff 256M online no 54-55 Normal -+0x00000001c0000000-0x00000001ffffffff 1G online yes 56-63 Normal -+0x0000000200000000-0x0000000207ffffff 128M online no 64 Normal -+0x0000000208000000-0x000000021fffffff 384M online yes 65-67 Normal -+0x0000000220000000-0x0000000237ffffff 384M online no 68-70 Normal -+0x0000000238000000-0x0000000277ffffff 1G online yes 71-78 Normal -+0x0000000278000000-0x000000028fffffff 384M online no 79-81 Normal -+0x0000000290000000-0x0000000297ffffff 128M online yes 82 Normal -+0x0000000298000000-0x00000002a7ffffff 256M online no 83-84 Normal -+0x00000002a8000000-0x00000002c7ffffff 512M online yes 85-88 Normal -+0x00000002c8000000-0x00000002dfffffff 384M online no 89-91 Normal -+0x00000002e0000000-0x00000002efffffff 256M online yes 92-93 Normal -+0x00000002f0000000-0x000000034fffffff 1.5G online no 94-105 Normal -+0x0000000350000000-0x0000000357ffffff 128M online yes 106 Normal -+0x0000000358000000-0x000000036fffffff 384M online no 107-109 Normal -+0x0000000370000000-0x0000000377ffffff 128M online yes 110 Normal -+0x0000000378000000-0x00000003c7ffffff 1.3G online no 111-120 Normal -+0x00000003c8000000-0x00000003e7ffffff 512M online yes 121-124 Normal -+0x00000003e8000000-0x000000042fffffff 1.1G online no 125-133 Normal -+0x0000000430000000-0x0000000437ffffff 128M online yes 134 Normal -+0x0000000438000000-0x000000043fffffff 128M online no 135 None -+ -+Memory block size: 128M -+Total online memory: 16G -+Total offline memory: 0B -diff --git a/tests/ts/lsmem/lsmem b/tests/ts/lsmem/lsmem -index 79c0523b9..b1313773e 100755 ---- a/tests/ts/lsmem/lsmem -+++ b/tests/ts/lsmem/lsmem -@@ -49,6 +49,7 @@ for dump in $(ls $TS_SELF/dumps/*.tar.bz2 | sort); do - do_lsmem --all --output $LSCOLUMNS - do_lsmem --raw --output $LSCOLUMNS - do_lsmem --json --output $LSCOLUMNS -+ do_lsmem -o +ZONES - - ts_finalize_subtest - done --- -2.15.0 - diff --git a/util-linux-lsmem-memory-zone-3.patch b/util-linux-lsmem-memory-zone-3.patch deleted file mode 100644 index 7f35038..0000000 --- a/util-linux-lsmem-memory-zone-3.patch +++ /dev/null @@ -1,44 +0,0 @@ -From afee3f204247fbc8e4cfaa1698f3d98762544dd8 Mon Sep 17 00:00:00 2001 -From: Andre Wild -Date: Wed, 27 Sep 2017 19:44:46 +0200 -Subject: [PATCH 3/3] lsmem/chmem: add memory zone awareness to bash-completion - -This patch extends the valid --output values with ZONES for the -lsmem bash-completion, and adds the --zone option for the chmem -bash-completion. - -Signed-off-by: Andre Wild -Signed-off-by: Gerald Schaefer ---- - bash-completion/chmem | 1 + - bash-completion/lsmem | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/bash-completion/chmem b/bash-completion/chmem -index 00b870dbd..3e3af87ac 100644 ---- a/bash-completion/chmem -+++ b/bash-completion/chmem -@@ -16,6 +16,7 @@ _chmem_module() - --disable - --blocks - --verbose -+ --zone - --help - --version - " -diff --git a/bash-completion/lsmem b/bash-completion/lsmem -index 8f7a46ec3..9aa124569 100644 ---- a/bash-completion/lsmem -+++ b/bash-completion/lsmem -@@ -9,7 +9,7 @@ _lsmem_module() - local prefix realcur OUTPUT_ALL OUTPUT - realcur="${cur##*,}" - prefix="${cur%$realcur}" -- OUTPUT_ALL='RANGE SIZE STATE REMOVABLE BLOCK NODE' -+ OUTPUT_ALL='RANGE SIZE STATE REMOVABLE BLOCK NODE ZONES' - for WORD in $OUTPUT_ALL; do - if ! [[ $prefix == *"$WORD"* ]]; then - OUTPUT="$WORD ${OUTPUT:-""}" --- -2.15.0 - diff --git a/util-linux-sysfs-nvme-devno.patch b/util-linux-sysfs-nvme-devno.patch deleted file mode 100644 index 2f27cd0..0000000 --- a/util-linux-sysfs-nvme-devno.patch +++ /dev/null @@ -1,157 +0,0 @@ -From d51f05bfecb299a830897106460bf395be440c0a Mon Sep 17 00:00:00 2001 -From: Karel Zak -Date: Fri, 9 Feb 2018 14:18:18 +0100 -Subject: [PATCH] lsblk: try device/dev to read devno - -Now sysfs_devname_to_devno() reads devno from /dev or -/sys/block//dev, but it seems that NVME uses -/sys/block//device/dev. - -Reported-by: Potnuri Bharat Teja -Signed-off-by: Karel Zak ---- - lib/sysfs.c | 97 ++++++++++++++++++++++++++++++++++--------------------------- - 1 file changed, 54 insertions(+), 43 deletions(-) - -diff --git a/lib/sysfs.c b/lib/sysfs.c -index e8125e511..b1b67c59f 100644 ---- a/lib/sysfs.c -+++ b/lib/sysfs.c -@@ -48,10 +48,28 @@ char *sysfs_devno_path(dev_t devno, char *buf, size_t bufsiz) - return sysfs_devno_attribute_path(devno, buf, bufsiz, NULL); - } - -+static dev_t read_devno(const char *path) -+{ -+ FILE *f; -+ int maj = 0, min = 0; -+ dev_t dev = 0; -+ -+ f = fopen(path, "r" UL_CLOEXECSTR); -+ if (!f) -+ return 0; -+ -+ if (fscanf(f, "%d:%d", &maj, &min) == 2) -+ dev = makedev(maj, min); -+ fclose(f); -+ return dev; -+} -+ - dev_t sysfs_devname_to_devno(const char *name, const char *parent) - { -- char buf[PATH_MAX], *path = NULL; -+ char buf[PATH_MAX]; -+ char *_name = NULL; /* name as encoded in sysfs */ - dev_t dev = 0; -+ int len; - - if (strncmp("/dev/", name, 5) == 0) { - /* -@@ -59,69 +77,62 @@ dev_t sysfs_devname_to_devno(const char *name, const char *parent) - */ - struct stat st; - -- if (stat(name, &st) == 0) -+ if (stat(name, &st) == 0) { - dev = st.st_rdev; -- else -- name += 5; /* unaccesible, or not node in /dev */ -+ goto done; -+ } -+ name += 5; /* unaccesible, or not node in /dev */ - } - -- if (!dev && parent && strncmp("dm-", name, 3)) { -+ _name = strdup(name); -+ if (!_name) -+ goto done; -+ sysfs_devname_dev_to_sys(_name); -+ -+ if (parent && strncmp("dm-", name, 3)) { - /* - * Create path to /sys/block///dev - */ -- char *_name = strdup(name), *_parent = strdup(parent); -- int len; -+ char *_parent = strdup(parent); - -- if (!_name || !_parent) { -- free(_name); -+ if (!_parent) { - free(_parent); -- return 0; -+ goto done; - } -- sysfs_devname_dev_to_sys(_name); - sysfs_devname_dev_to_sys(_parent); - - len = snprintf(buf, sizeof(buf), - _PATH_SYS_BLOCK "/%s/%s/dev", _parent, _name); -- free(_name); - free(_parent); - if (len < 0 || (size_t) len >= sizeof(buf)) -- return 0; -- path = buf; -+ goto done; - -- } else if (!dev) { -- /* -- * Create path to /sys/block//dev -- */ -- char *_name = strdup(name); -- int len; -- -- if (!_name) -- return 0; -- -- sysfs_devname_dev_to_sys(_name); -- len = snprintf(buf, sizeof(buf), -- _PATH_SYS_BLOCK "/%s/dev", _name); -- free(_name); -- if (len < 0 || (size_t) len >= sizeof(buf)) -- return 0; -- path = buf; -+ /* don't try anything else for dm-* */ -+ dev = read_devno(buf); -+ goto done; - } - -- if (path) { -+ /* -+ * Read from /sys/block//dev -+ */ -+ len = snprintf(buf, sizeof(buf), -+ _PATH_SYS_BLOCK "/%s/dev", _name); -+ if (len < 0 || (size_t) len >= sizeof(buf)) -+ goto done; -+ dev = read_devno(buf); -+ -+ if (!dev) { - /* -- * read devno from sysfs -+ * Read from /sys/block//device/dev - */ -- FILE *f; -- int maj = 0, min = 0; -- -- f = fopen(path, "r" UL_CLOEXECSTR); -- if (!f) -- return 0; -- -- if (fscanf(f, "%d:%d", &maj, &min) == 2) -- dev = makedev(maj, min); -- fclose(f); -+ len = snprintf(buf, sizeof(buf), -+ _PATH_SYS_BLOCK "/%s/device/dev", _name); -+ if (len < 0 || (size_t) len >= sizeof(buf)) -+ goto done; -+ dev = read_devno(buf); - } -+done: -+ free(_name); - return dev; - } - --- -2.16.1 - diff --git a/util-linux-systemd.changes b/util-linux-systemd.changes index f345599..4956a6c 100644 --- a/util-linux-systemd.changes +++ b/util-linux-systemd.changes @@ -1,3 +1,41 @@ +------------------------------------------------------------------- +Mon Aug 6 15:21:35 CEST 2018 - sbrabec@suse.com + +- Update to version 2.32.1: + * cal(1) has been improved and extended. + * libblkid has been extended to support LUKS2, Micron mpool, VDO + and Atari partition table. + * rfkill(8) has been moved to /usr/sbin. + * dmesg(1) provides better support for multi-line messages, new + command line option --force-prefix. + * fallocate(1) --dig-holes is faster and more effect now. + * fdisk(8) provides access to Protective MBR accessible from main + menu. Sun label support has been improved. + * lscpu(1) provides more details about ARM CPUs now + (FATE#326453). + * lsmem(1) supports memory zone awareness now (FATE#324252, + drop util-linux-lsmem-memory-zone-1.patch, + util-linux-lsmem-memory-zone-2.patch, + util-linux-lsmem-memory-zone-3.patch). + * lsns(8) provides netnsid and nsfs columns now. + * rtcwake(8) waits stdin to settle down before entering a system + sleep. + * Many fixes and improvements, see + https://www.kernel.org/pub/linux/utils/util-linux/v2.32/v2.32-ReleaseNotes + https://www.kernel.org/pub/linux/utils/util-linux/v2.32/v2.32.1-ReleaseNotes + (drop util_linux_bigendian.patch, util-linux-cramfs.patch, + util-linux-fincore-count.patch, + util-linux-sysfs-nvme-devno.patch, util-linux-lscpu-loop.patch, + util-linux-libmount-umount-a-segfault.patch, + util-linux-libmount-mount-a-nfs-bind-mount.patch, + util-linux-lscpu-chcpu-new-cpu-macros.patch, + util-linux-chcpu-cpu-count.patch). + +------------------------------------------------------------------- +Tue Jul 3 16:27:27 CEST 2018 - sbrabec@suse.com + +- Switch python-libmount to python3-libmount. + ------------------------------------------------------------------- Tue May 22 11:54:13 UTC 2018 - tchvatal@suse.com diff --git a/util-linux-systemd.spec b/util-linux-systemd.spec index 77593f0..e6ef424 100644 --- a/util-linux-systemd.spec +++ b/util-linux-systemd.spec @@ -43,7 +43,7 @@ Name: util-linux-systemd %define group_ul System/Base %define group_uls System/Base %define group_pl Development/Languages/Python -%if "%{name}" == "python-libmount" +%if "%{name}" == "python3-libmount" %define build_util_linux 0 %define build_util_linux_systemd 0 %define build_python_libmount 1 @@ -101,7 +101,7 @@ BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(libsystemd) %endif %if %build_python_libmount -BuildRequires: python-devel +BuildRequires: python3-devel %endif #BEGIN SECOND STAGE DEPENDENCIES %if !%build_util_linux @@ -116,7 +116,7 @@ BuildRequires: libmount-devel %endif %endif #END SECOND STAGE DEPENDENCIES -Version: 2.31.1 +Version: 2.32.1 Release: 0 # util-linux is a base package and uuidd pre-requiring pwdutils pulls # that into the core build cycle. pwdutils also pulls in the whole @@ -125,7 +125,7 @@ Release: 0 # these tools as well #!BuildIgnore: pwdutils Url: https://www.kernel.org/pub/linux/utils/util-linux/ -Source: https://www.kernel.org/pub/linux/utils/util-linux/v2.31/util-linux-%{version}.tar.xz +Source: https://www.kernel.org/pub/linux/utils/util-linux/v2.32/util-linux-%{version}.tar.xz Source1: util-linux-rpmlintrc Source4: raw.service Source5: etc.raw @@ -135,7 +135,7 @@ Source8: login.pamd Source9: remote.pamd Source10: su.pamd Source11: su.default -Source12: https://www.kernel.org/pub/linux/utils/util-linux/v2.31/util-linux-%{version}.tar.sign +Source12: https://www.kernel.org/pub/linux/utils/util-linux/v2.32/util-linux-%{version}.tar.sign Source13: %{_name}.keyring Source14: runuser.pamd Source15: runuser-l.pamd @@ -160,30 +160,6 @@ Source51: blkid.conf ## # PATCH-EXTEND-UPSTREAM: Let `su' handle /sbin and /usr/sbin in path Patch0: make-sure-sbin-resp-usr-sbin-are-in-PATH.diff -# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-1.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. -Patch1: util-linux-lsmem-memory-zone-1.patch -# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-2.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. -Patch2: util-linux-lsmem-memory-zone-2.patch -# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-3.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. -Patch3: util-linux-lsmem-memory-zone-3.patch -# Add four commits from upstream to pass tests on ppc64 -Patch4: util_linux_bigendian.patch -# PATCH-FIX-UPSTREAM util-linux-cramfs.patch sbrabec@suse.com -- Fix fsck.cramfs failure on ppc64le. -Patch5: util-linux-cramfs.patch -# PATCH-FIX-UPSTREAM util-linux-fincore-count.patch sbrabec@suse.com -- Disable bad test fincore/count. -Patch6: util-linux-fincore-count.patch -# PATCH-FIX-UPSTREAM util-linux-sysfs-nvme-devno.patch bsc1078662 sbrabec@suse.com -- Fix lsblk on NVMe. -Patch7: util-linux-sysfs-nvme-devno.patch -# PATCH-FIX-UPSTREAM util-linux-lscpu-loop.patch bsc1072947 sbrabec@suse.com -- Fix crash loop in lscpu. -Patch8: util-linux-lscpu-loop.patch -# PATCH-FIX-UPSTREAM util-linux-libmount-umount-a-segfault.patch sbrabec@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 sbrabec@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 sbrabec@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 sbrabec@suse.com -- chcpu: Properly count CPUs. -Patch12: util-linux-chcpu-cpu-count.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # %if %build_util_linux @@ -405,11 +381,11 @@ SMP systems. %endif %if %build_python_libmount %if %build_util_linux -%package -n python-libmount +%package -n python3-libmount Summary: %summary_pl Group: %group_pl -%description -n python-libmount +%description -n python3-libmount %else %description %endif @@ -420,18 +396,6 @@ library. %prep %setup -q -n %{_name}-%{version} -b 40 %patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 # # setctsid cp -p %{S:22} %{S:23} . @@ -674,7 +638,7 @@ install -Dm644 %{SOURCE42} %{buildroot}%{_unitdir}/rfkill-unblock@.service # util-linux install # %make_install -rm -f %{buildroot}%{python_sitearch}/libmount/*.*a +rm -f %{buildroot}%{python3_sitearch}/libmount/*.*a %if %build_util_linux #UsrMerge ln -s %{_bindir}/kill %{buildroot}/bin @@ -1376,12 +1340,12 @@ getent passwd uuidd >/dev/null || \ %if %build_python_libmount %if %build_util_linux -%files -n python-libmount +%files -n python3-libmount %else %files %endif %defattr(-, root, root) -%{python_sitearch}/libmount +%{python3_sitearch}/libmount %endif %changelog diff --git a/util-linux.changes b/util-linux.changes index f345599..4956a6c 100644 --- a/util-linux.changes +++ b/util-linux.changes @@ -1,3 +1,41 @@ +------------------------------------------------------------------- +Mon Aug 6 15:21:35 CEST 2018 - sbrabec@suse.com + +- Update to version 2.32.1: + * cal(1) has been improved and extended. + * libblkid has been extended to support LUKS2, Micron mpool, VDO + and Atari partition table. + * rfkill(8) has been moved to /usr/sbin. + * dmesg(1) provides better support for multi-line messages, new + command line option --force-prefix. + * fallocate(1) --dig-holes is faster and more effect now. + * fdisk(8) provides access to Protective MBR accessible from main + menu. Sun label support has been improved. + * lscpu(1) provides more details about ARM CPUs now + (FATE#326453). + * lsmem(1) supports memory zone awareness now (FATE#324252, + drop util-linux-lsmem-memory-zone-1.patch, + util-linux-lsmem-memory-zone-2.patch, + util-linux-lsmem-memory-zone-3.patch). + * lsns(8) provides netnsid and nsfs columns now. + * rtcwake(8) waits stdin to settle down before entering a system + sleep. + * Many fixes and improvements, see + https://www.kernel.org/pub/linux/utils/util-linux/v2.32/v2.32-ReleaseNotes + https://www.kernel.org/pub/linux/utils/util-linux/v2.32/v2.32.1-ReleaseNotes + (drop util_linux_bigendian.patch, util-linux-cramfs.patch, + util-linux-fincore-count.patch, + util-linux-sysfs-nvme-devno.patch, util-linux-lscpu-loop.patch, + util-linux-libmount-umount-a-segfault.patch, + util-linux-libmount-mount-a-nfs-bind-mount.patch, + util-linux-lscpu-chcpu-new-cpu-macros.patch, + util-linux-chcpu-cpu-count.patch). + +------------------------------------------------------------------- +Tue Jul 3 16:27:27 CEST 2018 - sbrabec@suse.com + +- Switch python-libmount to python3-libmount. + ------------------------------------------------------------------- Tue May 22 11:54:13 UTC 2018 - tchvatal@suse.com diff --git a/util-linux.spec b/util-linux.spec index dbfc102..44e9c2f 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -43,7 +43,7 @@ Name: util-linux %define group_ul System/Base %define group_uls System/Base %define group_pl Development/Languages/Python -%if "%{name}" == "python-libmount" +%if "%{name}" == "python3-libmount" %define build_util_linux 0 %define build_util_linux_systemd 0 %define build_python_libmount 1 @@ -101,7 +101,7 @@ BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(libsystemd) %endif %if %build_python_libmount -BuildRequires: python-devel +BuildRequires: python3-devel %endif #BEGIN SECOND STAGE DEPENDENCIES %if !%build_util_linux @@ -116,7 +116,7 @@ BuildRequires: libmount-devel %endif %endif #END SECOND STAGE DEPENDENCIES -Version: 2.31.1 +Version: 2.32.1 Release: 0 # util-linux is a base package and uuidd pre-requiring pwdutils pulls # that into the core build cycle. pwdutils also pulls in the whole @@ -125,7 +125,7 @@ Release: 0 # these tools as well #!BuildIgnore: pwdutils Url: https://www.kernel.org/pub/linux/utils/util-linux/ -Source: https://www.kernel.org/pub/linux/utils/util-linux/v2.31/util-linux-%{version}.tar.xz +Source: https://www.kernel.org/pub/linux/utils/util-linux/v2.32/util-linux-%{version}.tar.xz Source1: util-linux-rpmlintrc Source4: raw.service Source5: etc.raw @@ -135,7 +135,7 @@ Source8: login.pamd Source9: remote.pamd Source10: su.pamd Source11: su.default -Source12: https://www.kernel.org/pub/linux/utils/util-linux/v2.31/util-linux-%{version}.tar.sign +Source12: https://www.kernel.org/pub/linux/utils/util-linux/v2.32/util-linux-%{version}.tar.sign Source13: %{_name}.keyring Source14: runuser.pamd Source15: runuser-l.pamd @@ -160,30 +160,6 @@ Source51: blkid.conf ## # PATCH-EXTEND-UPSTREAM: Let `su' handle /sbin and /usr/sbin in path Patch0: make-sure-sbin-resp-usr-sbin-are-in-PATH.diff -# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-1.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. -Patch1: util-linux-lsmem-memory-zone-1.patch -# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-2.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. -Patch2: util-linux-lsmem-memory-zone-2.patch -# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-3.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. -Patch3: util-linux-lsmem-memory-zone-3.patch -# Add four commits from upstream to pass tests on ppc64 -Patch4: util_linux_bigendian.patch -# PATCH-FIX-UPSTREAM util-linux-cramfs.patch sbrabec@suse.com -- Fix fsck.cramfs failure on ppc64le. -Patch5: util-linux-cramfs.patch -# PATCH-FIX-UPSTREAM util-linux-fincore-count.patch sbrabec@suse.com -- Disable bad test fincore/count. -Patch6: util-linux-fincore-count.patch -# PATCH-FIX-UPSTREAM util-linux-sysfs-nvme-devno.patch bsc1078662 sbrabec@suse.com -- Fix lsblk on NVMe. -Patch7: util-linux-sysfs-nvme-devno.patch -# PATCH-FIX-UPSTREAM util-linux-lscpu-loop.patch bsc1072947 sbrabec@suse.com -- Fix crash loop in lscpu. -Patch8: util-linux-lscpu-loop.patch -# PATCH-FIX-UPSTREAM util-linux-libmount-umount-a-segfault.patch sbrabec@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 sbrabec@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 sbrabec@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 sbrabec@suse.com -- chcpu: Properly count CPUs. -Patch12: util-linux-chcpu-cpu-count.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # %if %build_util_linux @@ -405,11 +381,11 @@ SMP systems. %endif %if %build_python_libmount %if %build_util_linux -%package -n python-libmount +%package -n python3-libmount Summary: %summary_pl Group: %group_pl -%description -n python-libmount +%description -n python3-libmount %else %description %endif @@ -420,18 +396,6 @@ library. %prep %setup -q -n %{_name}-%{version} -b 40 %patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 # # setctsid cp -p %{S:22} %{S:23} . @@ -674,7 +638,7 @@ install -Dm644 %{SOURCE42} %{buildroot}%{_unitdir}/rfkill-unblock@.service # util-linux install # %make_install -rm -f %{buildroot}%{python_sitearch}/libmount/*.*a +rm -f %{buildroot}%{python3_sitearch}/libmount/*.*a %if %build_util_linux #UsrMerge ln -s %{_bindir}/kill %{buildroot}/bin @@ -1376,12 +1340,12 @@ getent passwd uuidd >/dev/null || \ %if %build_python_libmount %if %build_util_linux -%files -n python-libmount +%files -n python3-libmount %else %files %endif %defattr(-, root, root) -%{python_sitearch}/libmount +%{python3_sitearch}/libmount %endif %changelog diff --git a/util_linux_bigendian.patch b/util_linux_bigendian.patch deleted file mode 100644 index dd052bd..0000000 --- a/util_linux_bigendian.patch +++ /dev/null @@ -1,512 +0,0 @@ -commit 3ae2cb49d9a8c20de1892c691b7cc86f4deb280c -Author: Karel Zak -Date: Tue Dec 12 11:42:28 2017 +0100 - - lib/sha1: fix indention - - * indent -linux -psl -blf lib/sha1.c - * manually fix comments - - Signed-off-by: Karel Zak - -commit 4ff4b1106e8c6a71cce59ca40a2019342a92d47d -Author: Karel Zak -Date: Tue Jan 2 11:08:03 2018 +0100 - - lib/sha1: use proper WORDS_BIGENDIAN macro - - The original code uses BYTE_ORDER, but we use WORDS_BIGENDIAN in - utl-linux. - - Reported-by: Andreas Schwab - Signed-off-by: Karel Zak - ---- util-linux-2.31.1/lib/sha1.c 2017-12-19 13:52:18.459949048 +0100 -+++ util-linux-2.31.1/lib/sha1.c 2018-01-26 17:51:47.456559746 +0100 -@@ -1,43 +1,31 @@ - /* --SHA-1 in C --By Steve Reid --100% Public Domain -- --Test Vectors (from FIPS PUB 180-1) --"abc" -- A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D --"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" -- 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1 --A million repetitions of "a" -- 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F --*/ -+ * SHA-1 in C by Steve Reid -+ * 100% Public Domain -+ * -+ * Test Vectors (from FIPS PUB 180-1) -+ * 1) "abc": A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D -+ * 2) "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq": 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1 -+ * 3) A million repetitions of "a": 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F -+ */ - --/* #define LITTLE_ENDIAN * This should be #define'd already, if true. */ --/* #define SHA1HANDSOFF * Copies data before messing with it. */ -- --#define SHA1HANDSOFF -+#define UL_SHA1HANDSOFF - - #include - #include -- --/* for uint32_t */ - #include - - #include "sha1.h" - -- - #define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits)))) - - /* blk0() and blk() perform the initial expand. */ --/* I got the idea of expanding during the round function from SSLeay */ --#if BYTE_ORDER == LITTLE_ENDIAN --#define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \ -- |(rol(block->l[i],8)&0x00FF00FF)) --#elif BYTE_ORDER == BIG_ENDIAN --#define blk0(i) block->l[i] -+#ifdef WORDS_BIGENDIAN -+# define blk0(i) block->l[i] - #else --#error "Endianness not defined!" -+# define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \ -+ |(rol(block->l[i],8)&0x00FF00FF)) - #endif -+ - #define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \ - ^block->l[(i+2)&15]^block->l[i&15],1)) - -@@ -48,249 +36,221 @@ - #define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30); - #define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30); - -- - /* Hash a single 512-bit block. This is the core of the algorithm. */ - --void ul_SHA1Transform( -- uint32_t state[5], -- const unsigned char buffer[64] --) -+void ul_SHA1Transform(uint32_t state[5], const unsigned char buffer[64]) - { -- uint32_t a, b, c, d, e; -+ uint32_t a, b, c, d, e; - -- typedef union -- { -- unsigned char c[64]; -- uint32_t l[16]; -- } CHAR64LONG16; -+ typedef union { -+ unsigned char c[64]; -+ uint32_t l[16]; -+ } CHAR64LONG16; - --#ifdef SHA1HANDSOFF -- CHAR64LONG16 block[1]; /* use array to appear as a pointer */ -+#ifdef UL_SHA1HANDSOFF -+ CHAR64LONG16 block[1]; /* use array to appear as a pointer */ - -- memcpy(block, buffer, 64); -+ memcpy(block, buffer, 64); - #else -- /* The following had better never be used because it causes the -- * pointer-to-const buffer to be cast into a pointer to non-const. -- * And the result is written through. I threw a "const" in, hoping -- * this will cause a diagnostic. -- */ -- CHAR64LONG16 *block = (const CHAR64LONG16 *) buffer; -+ /* The following had better never be used because it causes the -+ * pointer-to-const buffer to be cast into a pointer to non-const. -+ * And the result is written through. I threw a "const" in, hoping -+ * this will cause a diagnostic. -+ */ -+ CHAR64LONG16 *block = (const CHAR64LONG16 *)buffer; - #endif -- /* Copy context->state[] to working vars */ -- a = state[0]; -- b = state[1]; -- c = state[2]; -- d = state[3]; -- e = state[4]; -- /* 4 rounds of 20 operations each. Loop unrolled. */ -- R0(a, b, c, d, e, 0); -- R0(e, a, b, c, d, 1); -- R0(d, e, a, b, c, 2); -- R0(c, d, e, a, b, 3); -- R0(b, c, d, e, a, 4); -- R0(a, b, c, d, e, 5); -- R0(e, a, b, c, d, 6); -- R0(d, e, a, b, c, 7); -- R0(c, d, e, a, b, 8); -- R0(b, c, d, e, a, 9); -- R0(a, b, c, d, e, 10); -- R0(e, a, b, c, d, 11); -- R0(d, e, a, b, c, 12); -- R0(c, d, e, a, b, 13); -- R0(b, c, d, e, a, 14); -- R0(a, b, c, d, e, 15); -- R1(e, a, b, c, d, 16); -- R1(d, e, a, b, c, 17); -- R1(c, d, e, a, b, 18); -- R1(b, c, d, e, a, 19); -- R2(a, b, c, d, e, 20); -- R2(e, a, b, c, d, 21); -- R2(d, e, a, b, c, 22); -- R2(c, d, e, a, b, 23); -- R2(b, c, d, e, a, 24); -- R2(a, b, c, d, e, 25); -- R2(e, a, b, c, d, 26); -- R2(d, e, a, b, c, 27); -- R2(c, d, e, a, b, 28); -- R2(b, c, d, e, a, 29); -- R2(a, b, c, d, e, 30); -- R2(e, a, b, c, d, 31); -- R2(d, e, a, b, c, 32); -- R2(c, d, e, a, b, 33); -- R2(b, c, d, e, a, 34); -- R2(a, b, c, d, e, 35); -- R2(e, a, b, c, d, 36); -- R2(d, e, a, b, c, 37); -- R2(c, d, e, a, b, 38); -- R2(b, c, d, e, a, 39); -- R3(a, b, c, d, e, 40); -- R3(e, a, b, c, d, 41); -- R3(d, e, a, b, c, 42); -- R3(c, d, e, a, b, 43); -- R3(b, c, d, e, a, 44); -- R3(a, b, c, d, e, 45); -- R3(e, a, b, c, d, 46); -- R3(d, e, a, b, c, 47); -- R3(c, d, e, a, b, 48); -- R3(b, c, d, e, a, 49); -- R3(a, b, c, d, e, 50); -- R3(e, a, b, c, d, 51); -- R3(d, e, a, b, c, 52); -- R3(c, d, e, a, b, 53); -- R3(b, c, d, e, a, 54); -- R3(a, b, c, d, e, 55); -- R3(e, a, b, c, d, 56); -- R3(d, e, a, b, c, 57); -- R3(c, d, e, a, b, 58); -- R3(b, c, d, e, a, 59); -- R4(a, b, c, d, e, 60); -- R4(e, a, b, c, d, 61); -- R4(d, e, a, b, c, 62); -- R4(c, d, e, a, b, 63); -- R4(b, c, d, e, a, 64); -- R4(a, b, c, d, e, 65); -- R4(e, a, b, c, d, 66); -- R4(d, e, a, b, c, 67); -- R4(c, d, e, a, b, 68); -- R4(b, c, d, e, a, 69); -- R4(a, b, c, d, e, 70); -- R4(e, a, b, c, d, 71); -- R4(d, e, a, b, c, 72); -- R4(c, d, e, a, b, 73); -- R4(b, c, d, e, a, 74); -- R4(a, b, c, d, e, 75); -- R4(e, a, b, c, d, 76); -- R4(d, e, a, b, c, 77); -- R4(c, d, e, a, b, 78); -- R4(b, c, d, e, a, 79); -- /* Add the working vars back into context.state[] */ -- state[0] += a; -- state[1] += b; -- state[2] += c; -- state[3] += d; -- state[4] += e; -- /* Wipe variables */ -- a = b = c = d = e = 0; --#ifdef SHA1HANDSOFF -- memset(block, '\0', sizeof(block)); -+ /* Copy context->state[] to working vars */ -+ a = state[0]; -+ b = state[1]; -+ c = state[2]; -+ d = state[3]; -+ e = state[4]; -+ /* 4 rounds of 20 operations each. Loop unrolled. */ -+ R0(a, b, c, d, e, 0); -+ R0(e, a, b, c, d, 1); -+ R0(d, e, a, b, c, 2); -+ R0(c, d, e, a, b, 3); -+ R0(b, c, d, e, a, 4); -+ R0(a, b, c, d, e, 5); -+ R0(e, a, b, c, d, 6); -+ R0(d, e, a, b, c, 7); -+ R0(c, d, e, a, b, 8); -+ R0(b, c, d, e, a, 9); -+ R0(a, b, c, d, e, 10); -+ R0(e, a, b, c, d, 11); -+ R0(d, e, a, b, c, 12); -+ R0(c, d, e, a, b, 13); -+ R0(b, c, d, e, a, 14); -+ R0(a, b, c, d, e, 15); -+ R1(e, a, b, c, d, 16); -+ R1(d, e, a, b, c, 17); -+ R1(c, d, e, a, b, 18); -+ R1(b, c, d, e, a, 19); -+ R2(a, b, c, d, e, 20); -+ R2(e, a, b, c, d, 21); -+ R2(d, e, a, b, c, 22); -+ R2(c, d, e, a, b, 23); -+ R2(b, c, d, e, a, 24); -+ R2(a, b, c, d, e, 25); -+ R2(e, a, b, c, d, 26); -+ R2(d, e, a, b, c, 27); -+ R2(c, d, e, a, b, 28); -+ R2(b, c, d, e, a, 29); -+ R2(a, b, c, d, e, 30); -+ R2(e, a, b, c, d, 31); -+ R2(d, e, a, b, c, 32); -+ R2(c, d, e, a, b, 33); -+ R2(b, c, d, e, a, 34); -+ R2(a, b, c, d, e, 35); -+ R2(e, a, b, c, d, 36); -+ R2(d, e, a, b, c, 37); -+ R2(c, d, e, a, b, 38); -+ R2(b, c, d, e, a, 39); -+ R3(a, b, c, d, e, 40); -+ R3(e, a, b, c, d, 41); -+ R3(d, e, a, b, c, 42); -+ R3(c, d, e, a, b, 43); -+ R3(b, c, d, e, a, 44); -+ R3(a, b, c, d, e, 45); -+ R3(e, a, b, c, d, 46); -+ R3(d, e, a, b, c, 47); -+ R3(c, d, e, a, b, 48); -+ R3(b, c, d, e, a, 49); -+ R3(a, b, c, d, e, 50); -+ R3(e, a, b, c, d, 51); -+ R3(d, e, a, b, c, 52); -+ R3(c, d, e, a, b, 53); -+ R3(b, c, d, e, a, 54); -+ R3(a, b, c, d, e, 55); -+ R3(e, a, b, c, d, 56); -+ R3(d, e, a, b, c, 57); -+ R3(c, d, e, a, b, 58); -+ R3(b, c, d, e, a, 59); -+ R4(a, b, c, d, e, 60); -+ R4(e, a, b, c, d, 61); -+ R4(d, e, a, b, c, 62); -+ R4(c, d, e, a, b, 63); -+ R4(b, c, d, e, a, 64); -+ R4(a, b, c, d, e, 65); -+ R4(e, a, b, c, d, 66); -+ R4(d, e, a, b, c, 67); -+ R4(c, d, e, a, b, 68); -+ R4(b, c, d, e, a, 69); -+ R4(a, b, c, d, e, 70); -+ R4(e, a, b, c, d, 71); -+ R4(d, e, a, b, c, 72); -+ R4(c, d, e, a, b, 73); -+ R4(b, c, d, e, a, 74); -+ R4(a, b, c, d, e, 75); -+ R4(e, a, b, c, d, 76); -+ R4(d, e, a, b, c, 77); -+ R4(c, d, e, a, b, 78); -+ R4(b, c, d, e, a, 79); -+ /* Add the working vars back into context.state[] */ -+ state[0] += a; -+ state[1] += b; -+ state[2] += c; -+ state[3] += d; -+ state[4] += e; -+ /* Wipe variables */ -+ a = b = c = d = e = 0; -+#ifdef UL_SHA1HANDSOFF -+ memset(block, '\0', sizeof(block)); - #endif - } - -- - /* SHA1Init - Initialize new context */ - --void ul_SHA1Init( -- UL_SHA1_CTX * context --) -+void ul_SHA1Init(UL_SHA1_CTX *context) - { -- /* SHA1 initialization constants */ -- context->state[0] = 0x67452301; -- context->state[1] = 0xEFCDAB89; -- context->state[2] = 0x98BADCFE; -- context->state[3] = 0x10325476; -- context->state[4] = 0xC3D2E1F0; -- context->count[0] = context->count[1] = 0; -+ /* SHA1 initialization constants */ -+ context->state[0] = 0x67452301; -+ context->state[1] = 0xEFCDAB89; -+ context->state[2] = 0x98BADCFE; -+ context->state[3] = 0x10325476; -+ context->state[4] = 0xC3D2E1F0; -+ context->count[0] = context->count[1] = 0; - } - -- - /* Run your data through this. */ - --void ul_SHA1Update( -- UL_SHA1_CTX * context, -- const unsigned char *data, -- uint32_t len --) -+void ul_SHA1Update(UL_SHA1_CTX *context, const unsigned char *data, uint32_t len) - { -- uint32_t i; -+ uint32_t i; - -- uint32_t j; -+ uint32_t j; - -- j = context->count[0]; -- if ((context->count[0] += len << 3) < j) -- context->count[1]++; -- context->count[1] += (len >> 29); -- j = (j >> 3) & 63; -- if ((j + len) > 63) -- { -- memcpy(&context->buffer[j], data, (i = 64 - j)); -- ul_SHA1Transform(context->state, context->buffer); -- for (; i + 63 < len; i += 64) -- { -- ul_SHA1Transform(context->state, &data[i]); -- } -- j = 0; -- } -- else -- i = 0; -- memcpy(&context->buffer[j], &data[i], len - i); -+ j = context->count[0]; -+ if ((context->count[0] += len << 3) < j) -+ context->count[1]++; -+ context->count[1] += (len >> 29); -+ j = (j >> 3) & 63; -+ if ((j + len) > 63) { -+ memcpy(&context->buffer[j], data, (i = 64 - j)); -+ ul_SHA1Transform(context->state, context->buffer); -+ for (; i + 63 < len; i += 64) { -+ ul_SHA1Transform(context->state, &data[i]); -+ } -+ j = 0; -+ } else -+ i = 0; -+ memcpy(&context->buffer[j], &data[i], len - i); - } - -- - /* Add padding and return the message digest. */ - --void ul_SHA1Final( -- unsigned char digest[20], -- UL_SHA1_CTX * context --) -+void ul_SHA1Final(unsigned char digest[20], UL_SHA1_CTX *context) - { -- unsigned i; -+ unsigned i; - -- unsigned char finalcount[8]; -+ unsigned char finalcount[8]; - -- unsigned char c; -+ unsigned char c; - --#if 0 /* untested "improvement" by DHR */ -- /* Convert context->count to a sequence of bytes -- * in finalcount. Second element first, but -- * big-endian order within element. -- * But we do it all backwards. -- */ -- unsigned char *fcp = &finalcount[8]; -+#if 0 /* untested "improvement" by DHR */ -+ /* Convert context->count to a sequence of bytes -+ * in finalcount. Second element first, but -+ * big-endian order within element. -+ * But we do it all backwards. -+ */ -+ unsigned char *fcp = &finalcount[8]; - -- for (i = 0; i < 2; i++) -- { -- uint32_t t = context->count[i]; -+ for (i = 0; i < 2; i++) { -+ uint32_t t = context->count[i]; - -- int j; -+ int j; - -- for (j = 0; j < 4; t >>= 8, j++) -- *--fcp = (unsigned char) t} -+ for (j = 0; j < 4; t >>= 8, j++) -+ *--fcp = (unsigned char)t} - #else -- for (i = 0; i < 8; i++) -- { -- finalcount[i] = (unsigned char) ((context->count[(i >= 4 ? 0 : 1)] >> ((3 - (i & 3)) * 8)) & 255); /* Endian independent */ -- } -+ for (i = 0; i < 8; i++) { -+ finalcount[i] = (unsigned char)((context->count[(i >= 4 ? 0 : 1)] >> ((3 - (i & 3)) * 8)) & 255); /* Endian independent */ -+ } - #endif -- c = 0200; -- ul_SHA1Update(context, &c, 1); -- while ((context->count[0] & 504) != 448) -- { -- c = 0000; -- ul_SHA1Update(context, &c, 1); -- } -- ul_SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */ -- for (i = 0; i < 20; i++) -- { -- digest[i] = (unsigned char) -- ((context->state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255); -- } -- /* Wipe variables */ -- memset(context, '\0', sizeof(*context)); -- memset(&finalcount, '\0', sizeof(finalcount)); -+ c = 0200; -+ ul_SHA1Update(context, &c, 1); -+ while ((context->count[0] & 504) != 448) { -+ c = 0000; -+ ul_SHA1Update(context, &c, 1); -+ } -+ ul_SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */ -+ for (i = 0; i < 20; i++) { -+ digest[i] = (unsigned char) -+ ((context->state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255); -+ } -+ /* Wipe variables */ -+ memset(context, '\0', sizeof(*context)); -+ memset(&finalcount, '\0', sizeof(finalcount)); - } - --void ul_SHA1( -- char *hash_out, -- const char *str, -- unsigned len) -+void ul_SHA1(char *hash_out, const char *str, unsigned len) - { -- UL_SHA1_CTX ctx; -- unsigned int ii; -+ UL_SHA1_CTX ctx; -+ unsigned int ii; - -- ul_SHA1Init(&ctx); -- for (ii=0; ii