Hi,

* Chris Hofstaedtler <z...@debian.org> [250221 11:57]:
Do you have some estimates from last releases of util-linux how many
changes go into a release after rc1? Do you expect a big diff between
rc1 and the final release?

Attached are two filtered debdiffs. The first one is from rc1 to final - util-linux_2.41-1-from-rc1.debdiff.filtered.gz

The second one is from rc2 to final - util-linux_2.41-1-from-rc2.debdiff.filtered.

The filtered diffs were produced using the following command. Currently we do not use meson to build, and the translation and manpage updates are filtered out.
    debdiff util-linux_2.41~rc2-1.dsc util-linux_2.41-1.dsc | filterdiff -x 
'*/po*/*.po' -x '*/po*/*.pot' -x '*/*.[1358]' -x '*.adoc' -x '*/meson.build'

rc2 was in experimental since 2025-03-06. I've now uploaded the final release to experimental.

Chris

Attachment: util-linux_2.41-1-from-rc1.debdiff.filtered.gz
Description: application/gunzip

diff -Nru util-linux-2.41~rc2/ChangeLog util-linux-2.41/ChangeLog
--- util-linux-2.41~rc2/ChangeLog       2025-03-06 12:25:41.215978531 +0100
+++ util-linux-2.41/ChangeLog   2025-03-18 13:56:05.331195955 +0100
@@ -1,3 +1,3 @@
 See version control history.
 
-https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/log?h=v2.41-rc2
+https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/log?h=v2.41
diff -Nru util-linux-2.41~rc2/config.h.in util-linux-2.41/config.h.in
--- util-linux-2.41~rc2/config.h.in     2025-03-06 12:20:59.472105026 +0100
+++ util-linux-2.41/config.h.in 2025-03-18 13:52:33.260910749 +0100
@@ -381,6 +381,9 @@
 /* Define to 1 if you have the <linux/raw.h> header file. */
 #undef HAVE_LINUX_RAW_H
 
+/* Define to 1 if you have the <linux/seccomp.h> header file. */
+#undef HAVE_LINUX_SECCOMP_H
+
 /* Define to 1 if you have the <linux/securebits.h> header file. */
 #undef HAVE_LINUX_SECUREBITS_H
 
diff -Nru util-linux-2.41~rc2/configure util-linux-2.41/configure
--- util-linux-2.41~rc2/configure       2025-03-06 12:20:58.808107899 +0100
+++ util-linux-2.41/configure   2025-03-18 13:52:32.593913806 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for util-linux 2.41-rc2.
+# Generated by GNU Autoconf 2.72 for util-linux 2.41.
 #
 # Report bugs to <k...@redhat.com>.
 #
@@ -614,8 +614,8 @@
 # Identity of this package.
 PACKAGE_NAME='util-linux'
 PACKAGE_TARNAME='util-linux'
-PACKAGE_VERSION='2.41-rc2'
-PACKAGE_STRING='util-linux 2.41-rc2'
+PACKAGE_VERSION='2.41'
+PACKAGE_STRING='util-linux 2.41'
 PACKAGE_BUGREPORT='k...@redhat.com'
 PACKAGE_URL='https://www.kernel.org/pub/linux/utils/util-linux/'
 
@@ -2131,7 +2131,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-'configure' configures util-linux 2.41-rc2 to adapt to many kinds of systems.
+'configure' configures util-linux 2.41 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2202,7 +2202,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of util-linux 2.41-rc2:";;
+     short | recursive ) echo "Configuration of util-linux 2.41:";;
    esac
   cat <<\_ACEOF
 
@@ -2595,7 +2595,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-util-linux configure 2.41-rc2
+util-linux configure 2.41
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -3205,7 +3205,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by util-linux $as_me 2.41-rc2, which was
+It was created by util-linux $as_me 2.41, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -6051,7 +6051,7 @@
 
 # Define the identity of the package.
  PACKAGE='util-linux'
- VERSION='2.41-rc2'
+ VERSION='2.41'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -6612,7 +6612,7 @@
                     sub("-.*","",$3); print $3 ~ /^[0-9]+$/ ? $3 : 0}')
 
 
LIBBLKID_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
-LIBBLKID_DATE="06-Mar-2025"
+LIBBLKID_DATE="18-Mar-2025"
 LIBBLKID_LT_MAJOR=1
 LIBBLKID_LT_MINOR=1
 LIBBLKID_LT_MICRO=0
@@ -25934,6 +25934,12 @@
   printf "%s\n" "#define HAVE_LINUX_RAW_H 1" >>confdefs.h
 
 fi
+ac_fn_c_check_header_compile "$LINENO" "linux/seccomp.h" 
"ac_cv_header_linux_seccomp_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_seccomp_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_LINUX_SECCOMP_H 1" >>confdefs.h
+
+fi
 ac_fn_c_check_header_compile "$LINENO" "linux/securebits.h" 
"ac_cv_header_linux_securebits_h" "$ac_includes_default"
 if test "x$ac_cv_header_linux_securebits_h" = xyes
 then :
@@ -26506,6 +26512,7 @@
 have_linux_mount_h=$ac_cv_header_linux_mount_h
 have_linux_pr_h=$ac_cv_header_linux_pr_h
 have_linux_raw_h=$ac_cv_header_linux_raw_h
+have_linux_seccomp_h=$ac_cv_header_linux_seccomp_h
 have_linux_securebits_h=$ac_cv_header_linux_securebits_h
 have_linux_version_h=$ac_cv_header_linux_version_h
 have_linux_watchdog_h=$ac_cv_header_linux_watchdog_h
@@ -35445,6 +35452,33 @@
 
     ul_haveone_setpriv=no
 
+      if test "x$have_linux_seccomp_h" = xyes; then
+        ul_haveone_setpriv=yes
+      fi
+
+    case $enable_setpriv:$ul_haveone_setpriv in #(
+    no:*)
+      build_setpriv=no ;;
+    yes:yes)
+      build_setpriv=yes ;;
+    yes:*)
+      as_fn_error $? "setpriv selected, but required linux/seccomp.h header 
file not available" "$LINENO" 5;;
+    check:yes)
+      build_setpriv=yes ;;
+    check:*)
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: linux/seccomp.h 
header file not found; not building setpriv" >&5
+printf "%s\n" "$as_me: WARNING: linux/seccomp.h header file not found; not 
building setpriv" >&2;}
+      build_setpriv=no ;;
+    esac
+  fi
+
+
+
+
+  if test "x$build_setpriv" != xno; then
+
+    ul_haveone_setpriv=no
+
       if test "x$have_linux_securebits_h" = xyes; then
         ul_haveone_setpriv=yes
       fi
@@ -38120,6 +38154,33 @@
     esac
   fi
 
+
+
+
+  if test "x$build_enosys" != xno; then
+
+    ul_haveone_enosys=no
+
+      if test "x$have_linux_seccomp_h" = xyes; then
+        ul_haveone_enosys=yes
+      fi
+
+    case $enable_enosys:$ul_haveone_enosys in #(
+    no:*)
+      build_enosys=no ;;
+    yes:yes)
+      build_enosys=yes ;;
+    yes:*)
+      as_fn_error $? "enosys selected, but required linux/seccomp.h header 
file not available" "$LINENO" 5;;
+    check:yes)
+      build_enosys=yes ;;
+    check:*)
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: linux/seccomp.h 
header file not found; not building enosys" >&5
+printf "%s\n" "$as_me: WARNING: linux/seccomp.h header file not found; not 
building enosys" >&2;}
+      build_enosys=no ;;
+    esac
+  fi
+
 if test "x$build_enosys" = xyes
 then :
 
@@ -47157,7 +47218,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by util-linux $as_me 2.41-rc2, which was
+This file was extended by util-linux $as_me 2.41, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -47226,7 +47287,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-util-linux config.status 2.41-rc2
+util-linux config.status 2.41
 configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 
diff -Nru util-linux-2.41~rc2/configure.ac util-linux-2.41/configure.ac
--- util-linux-2.41~rc2/configure.ac    2025-03-06 12:14:41.865690098 +0100
+++ util-linux-2.41/configure.ac        2025-03-18 13:50:51.818370378 +0100
@@ -29,7 +29,7 @@
 
 dnl libblkid version
 
LIBBLKID_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
-LIBBLKID_DATE="06-Mar-2025"
+LIBBLKID_DATE="18-Mar-2025"
 LIBBLKID_LT_MAJOR=1
 LIBBLKID_LT_MINOR=1
 LIBBLKID_LT_MICRO=0
@@ -349,6 +349,7 @@
        linux/nsfs.h \
        linux/pr.h \
        linux/raw.h \
+       linux/seccomp.h \
        linux/securebits.h \
        linux/tiocl.h \
        linux/version.h \
@@ -515,6 +516,7 @@
 have_linux_mount_h=$ac_cv_header_linux_mount_h
 have_linux_pr_h=$ac_cv_header_linux_pr_h
 have_linux_raw_h=$ac_cv_header_linux_raw_h
+have_linux_seccomp_h=$ac_cv_header_linux_seccomp_h
 have_linux_securebits_h=$ac_cv_header_linux_securebits_h
 have_linux_version_h=$ac_cv_header_linux_version_h
 have_linux_watchdog_h=$ac_cv_header_linux_watchdog_h
@@ -1704,6 +1706,7 @@
 )
 UL_BUILD_INIT([setpriv])
 UL_REQUIRES_LINUX([setpriv])
+UL_REQUIRES_HAVE([setpriv], [linux_seccomp_h], [linux/seccomp.h header file])
 UL_REQUIRES_HAVE([setpriv], [linux_securebits_h], [linux/securebits.h header 
file])
 UL_REQUIRES_HAVE([setpriv], [linux_capability_h], [linux/capability.h header 
file])
 UL_REQUIRES_HAVE([setpriv], [cap_ng], [libcap-ng library])
@@ -2021,6 +2024,7 @@
 UL_BUILD_INIT([enosys])
 UL_REQUIRES_LINUX([enosys])
 UL_REQUIRES_HAVE([enosys], [linux_audit_h], [linux/audit.h header file])
+UL_REQUIRES_HAVE([enosys], [linux_seccomp_h], [linux/seccomp.h header file])
 AS_IF([test "x$build_enosys" = xyes], [
   AC_MSG_CHECKING([for valid audit arch])
   AC_COMPILE_IFELSE(
diff -Nru util-linux-2.41~rc2/debian/changelog util-linux-2.41/debian/changelog
--- util-linux-2.41~rc2/debian/changelog        2025-03-06 13:30:32.000000000 
+0100
+++ util-linux-2.41/debian/changelog    2025-03-18 17:26:32.000000000 +0100
@@ -1,3 +1,12 @@
+util-linux (2.41-1) experimental; urgency=medium
+
+  * New upstream release.
+  * d/control: put myself directly into the Maintainer field
+  * Refresh patches
+  * Update list of installed localized manpages
+
+ -- Chris Hofstaedtler <z...@debian.org>  Tue, 18 Mar 2025 17:26:32 +0100
+
 util-linux (2.41~rc2-1) experimental; urgency=medium
 
   * New upstream release candidate.
diff -Nru util-linux-2.41~rc2/debian/control util-linux-2.41/debian/control
--- util-linux-2.41~rc2/debian/control  2025-03-06 13:30:32.000000000 +0100
+++ util-linux-2.41/debian/control      2025-03-18 17:26:32.000000000 +0100
@@ -34,9 +34,7 @@
  libedit-dev,
 Section: utils
 Priority: required
-Maintainer: util-linux packagers <util-li...@packages.debian.org>
-Uploaders:
- Chris Hofstaedtler <z...@debian.org>,
+Maintainer: Chris Hofstaedtler <z...@debian.org>
 Standards-Version: 4.7.0
 Rules-Requires-Root: no
 Vcs-Browser: https://salsa.debian.org/debian/util-linux
diff -Nru util-linux-2.41~rc2/debian/patches/debian/man-getopt-examples.patch 
util-linux-2.41/debian/patches/debian/man-getopt-examples.patch
--- util-linux-2.41~rc2/debian/patches/debian/man-getopt-examples.patch 
2025-03-06 13:30:32.000000000 +0100
+++ util-linux-2.41/debian/patches/debian/man-getopt-examples.patch     
2025-03-18 17:26:32.000000000 +0100
@@ -9,7 +9,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/misc-utils/getopt.1 b/misc-utils/getopt.1
-index a4a5f42..f9adf28 100644
+index 73a407b..0e2f9c4 100644
 --- a/misc-utils/getopt.1
 +++ b/misc-utils/getopt.1
 @@ -155,7 +155,7 @@ In compatibility mode, leading \*(Aq\fB\-\fP\*(Aq and 
\*(Aq\fB+\fP\*(Aq characte
diff -Nru util-linux-2.41~rc2/debian/util-linux-locales.install 
util-linux-2.41/debian/util-linux-locales.install
--- util-linux-2.41~rc2/debian/util-linux-locales.install       2025-03-06 
13:30:32.000000000 +0100
+++ util-linux-2.41/debian/util-linux-locales.install   2025-03-18 
17:26:32.000000000 +0100
@@ -5,6 +5,7 @@
 <!nodoc> debian/tmp/usr/share/man/*/man1/col.1
 <!nodoc> debian/tmp/usr/share/man/*/man1/colcrt.1
 <!nodoc> debian/tmp/usr/share/man/*/man1/colrm.1
+<!nodoc> debian/tmp/usr/share/man/*/man1/column.1
 <!nodoc> debian/tmp/usr/share/man/*/man1/hexdump.1
 <!nodoc> debian/tmp/usr/share/man/*/man1/look.1
 <!nodoc> debian/tmp/usr/share/man/*/man1/ul.1
@@ -14,6 +15,7 @@
 <!nodoc> debian/tmp/usr/share/man/*/man1/renice.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/script.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/scriptlive.1
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/scriptreplay.1
 <!nodoc> debian/tmp/usr/share/man/*/man1/wall.1
 
 # eject
@@ -24,9 +26,27 @@
 <!nodoc> debian/tmp/usr/share/man/*/man8/fdisk.8
 <!nodoc> debian/tmp/usr/share/man/*/man8/sfdisk.8
 
+# lastlog2
+<!nodoc> debian/tmp/usr/share/man/*/man8/lastlog2.8
+
 # libblkid-dev
 <!nodoc> debian/tmp/usr/share/man/*/man3/libblkid.3
 
+# liblastlog2-dev
+<!nodoc> debian/tmp/usr/share/man/*/man3/lastlog2.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_import_lastlog.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_read_all.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_read_entry.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_remove_entry.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_update_login_time.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_write_entry.3
+
+# libpam-lastlog2
+<!nodoc> debian/tmp/usr/share/man/*/man8/pam_lastlog2.8
+
+# login
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/newgrp.1
+
 # mount
 <!nodoc> debian/tmp/usr/share/man/*/man5/fstab.5
 <!nodoc> debian/tmp/usr/share/man/*/man8/losetup.8
@@ -48,6 +68,8 @@
 <!nodoc> debian/tmp/usr/share/man/*/man1/hardlink.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/ionice.1
 <!nodoc> debian/tmp/usr/share/man/*/man1/ipcs.1
+<!nodoc> debian/tmp/usr/share/man/*/man1/ipcmk.1
+<!nodoc> debian/tmp/usr/share/man/*/man1/ipcrm.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/lscpu.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/lsipc.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/lslocks.1
@@ -58,8 +80,10 @@
 <!nodoc> debian/tmp/usr/share/man/*/man1/mountpoint.1
 <!nodoc> debian/tmp/usr/share/man/*/man1/namei.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/nsenter.1
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/prlimit.1
 <!nodoc> debian/tmp/usr/share/man/de/man1/rename.1 => 
/usr/share/man/de/man1/rename.ul.1
 <!nodoc> debian/tmp/usr/share/man/fr/man1/rename.1 => 
/usr/share/man/fr/man1/rename.ul.1
+<!nodoc> debian/tmp/usr/share/man/pl/man1/rename.1 => 
/usr/share/man/pl/man1/rename.ul.1
 <!nodoc> debian/tmp/usr/share/man/ro/man1/rename.1 => 
/usr/share/man/ro/man1/rename.ul.1
 <!nodoc> debian/tmp/usr/share/man/sr/man1/rename.1 => 
/usr/share/man/sr/man1/rename.ul.1
 <!nodoc> debian/tmp/usr/share/man/uk/man1/rename.1 => 
/usr/share/man/uk/man1/rename.ul.1
@@ -68,11 +92,14 @@
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/pipesz.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/setpriv.1
 <!nodoc> debian/tmp/usr/share/man/*/man1/setsid.1
+<!nodoc> debian/tmp/usr/share/man/*/man1/setterm.1
 <!nodoc> debian/tmp/usr/share/man/*/man1/su.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/taskset.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/uclampset.1
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/unshare.1
 <!nodoc> debian/tmp/usr/share/man/*/man1/whereis.1
 <!nodoc> debian/tmp/usr/share/man/*/man5/adjtime_config.5
+<!nodoc> debian/tmp/usr/share/man/*/man5/scols-filter.5
 <!nodoc> debian/tmp/usr/share/man/*/man5/terminal-colors.d.5
 <!nodoc> debian/tmp/usr/share/man/*/man8/agetty.8
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man8/blkdiscard.8
@@ -114,6 +141,9 @@
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man8/zramctl.8
 
 # util-linux-extra
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/bits.1
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/coresched.1
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/enosys.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/exch.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/fadvise.1
 [linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/fincore.1
diff -Nru util-linux-2.41~rc2/disk-utils/raw.8.deps 
util-linux-2.41/disk-utils/raw.8.deps
--- util-linux-2.41~rc2/disk-utils/raw.8.deps   2025-03-06 12:25:40.809980136 
+0100
+++ util-linux-2.41/disk-utils/raw.8.deps       2025-03-18 13:56:04.909196953 
+0100
@@ -1 +1 @@
-/home/proj-me/util-linux/util-linux/util-linux-2.41-rc2/disk-utils/raw.8: 
/home/proj-me/util-linux/util-linux/man-common/help-version.adoc 
/home/proj-me/util-linux/util-linux/man-common/bugreports.adoc 
/home/proj-me/util-linux/util-linux/man-common/footer.adoc
\ No newline at end of file
+/home/proj-me/util-linux/util-linux/util-linux-2.41/disk-utils/raw.8: 
/home/proj-me/util-linux/util-linux/man-common/help-version.adoc 
/home/proj-me/util-linux/util-linux/man-common/bugreports.adoc 
/home/proj-me/util-linux/util-linux/man-common/footer.adoc
\ No newline at end of file
diff -Nru util-linux-2.41~rc2/Documentation/releases/v2.41-ReleaseNotes 
util-linux-2.41/Documentation/releases/v2.41-ReleaseNotes
--- util-linux-2.41~rc2/Documentation/releases/v2.41-ReleaseNotes       
2025-03-06 12:13:49.190911078 +0100
+++ util-linux-2.41/Documentation/releases/v2.41-ReleaseNotes   2025-03-18 
13:48:52.997908724 +0100
@@ -121,6 +121,7 @@
     - add defines for m68k, sh (by Chris Hofstaedtler)
 
 autotools:
+    - add missing meson.build files (by Karel Zak)
     - Fix use of mq_open and mq_close (by Samuel Thibault)
     - remove tools/git-tp-sync-man (by Karel Zak)
     - fix po-man discheck (by Karel Zak)
@@ -189,6 +190,7 @@
     - bump actions/checkout from 1 to 4 (by dependabot[bot])
 
 build-sys:
+    - update release dates (by Karel Zak)
     - keep the most recent version in NEWS (by Karel Zak)
     - update version dates (by Karel Zak)
     - build sample-mount-overwrite only on Linux (by Pino Toscano)
@@ -257,6 +259,9 @@
 column.1.adoc:
     - Fix spelling and improve option descriptions (by Nejc Bertoncelj)
 
+{configure.ac,meson.build}:
+    - conditionally build {enosys,setpriv} if seccomp is present #3280 (by 
Thomas Devoogdt)
+
 coresched:
     - add bash completions (by Thijs Raymakers)
     - Manage core scheduling cookies for tasks (by Thijs Raymakers)
@@ -275,6 +280,7 @@
     - fsck.8.adoc - fix email typo (by Geoffrey Casper)
 
 docs:
+    - update v2.41-rc2-ReleaseNotes (by Karel Zak)
     - fix typo in v2.41-ReleaseNotes (by Chris Hofstaedtler)
     - add v2.41-ReleaseNotes (by Karel Zak)
     - reduce and freeze NEWS file (by Karel Zak)
@@ -307,6 +313,10 @@
     - add "overwrite" argument to env_list_setenv() (by Karel Zak)
     - save parsed variables into ul_env_list (by Karel Zak)
 
+exch:
+    - cosmetic code changes (by Karel Zak)
+    - fix compile error if renameat2 is not present (by Thomas Devoogdt)
+
 fadvise:
     - fix a typo of an option name in the bash completion rule (by Masatake 
YAMATO)
 
@@ -408,6 +418,7 @@
     - check blocksize when display data (by Karel Zak)
 
 hwclock:
+    - avoid dereferencing a pointer [coverity scan] (by Karel Zak)
     - Support GNU Hurd (by Zhaoming Luo)
     - Remove ioperm declare as it causes nested extern declare warning (by 
Zhaoming Luo)
     - cleanup save_adjtime() (by Karel Zak)
@@ -416,6 +427,7 @@
     - initialize parser variables (by Karel Zak)
 
 include:
+    - use public domain for colors.{c,h} and xalloc.h (by Karel Zak)
     - add functions to implement --hyperlink (by Karel Zak)
     - Include <unistd.h> in pidfd-utils.h for syscall() (by Xi Ruoyao)
     - introduce seccomp.h (by Thomas Weißschuh)
@@ -461,6 +473,9 @@
 ipcrm:
     - simplify code (by Yang Kun)
 
+irqtop,lsirq:
+    - set up locale path, so messages get actually translated (by Benno 
Schulenberg)
+
 jsonwrt:
     - add ul_jsonwrt_flush (by Thomas Weißschuh)
 
@@ -539,10 +554,12 @@
     - introduce ul_jsonwrt_empty() (by Karel Zak)
 
 liblastlog2:
+    - (test) fix memory leak in failed test [coverity scan] (by Karel Zak)
     - tests provide fallback PATH_MAX definition (by Pino Toscano)
     - Improved sqlite3 error handling (by Stefan Schubert)
 
 libmount:
+    - remove possible leak in mnt_context_guess_srcpath_fstype() [coverity 
scan] (by Karel Zak)
     - add support for STATMOUNT_SB_SOURCE (by Karel Zak)
     - fix table_init_listmount() (by Karel Zak)
     - fix use-after free, etc. [coverity scan] (by Karel Zak)
@@ -712,6 +729,7 @@
     - fix FD leak (by Karel Zak)
 
 lscpu:
+    - New Arm part numbers (by Jeremy Linton)
     - skip frequencies of 0 MHz when getting minmhz (by Ricardo Neri)
     - make three column descriptions more grammatical (by Benno Schulenberg)
     - Add FUJITSU aarch64 MONAKA cpupart (by Emi, Kisanuki)
@@ -729,6 +747,9 @@
     - restructure op-mode printing (by Thomas Weißschuh)
 
 lsfd:
+    - (man) fix a typo (by Masatake YAMATO)
+    - initialize struct stat [coverity scan] (by Karel Zak)
+    - (man) fix a typo (by Masatake YAMATO)
     - remove C++ comment (by Karel Zak)
     - support AF_VSOCK sockets (by Masatake YAMATO)
     - don't enable hyperlinks for deleted files (by Masatake YAMATO)
@@ -805,6 +826,8 @@
     - fix buffer overflow (by Karel Zak)
 
 lslogins:
+    - fix typo (by Karel Zak)
+    - remove possible memory leaks [coverity scan] (by Karel Zak)
     - don't ignore stat error (by Thorsten Kukuk)
 
 lsmem:
@@ -851,6 +874,7 @@
     - remove ability to compile with fchmod(S_IWOTH) (by Karel Zak)
 
 meson:
+    - bring hexdump in line with others (by Christian Hesse)
     - demote two libraries to library (by Rosen Penev)
     - generate man page translations (by Jordan Williams)
     - use files() for man page source files (by Jordan Williams)
@@ -964,6 +988,8 @@
     - update note regarding swapfile creation (by Mike Yuan)
 
 more:
+    - remove a duplicate call of setlocale() (by Benno Schulenberg)
+    - fix repeat command (by Karel Zak)
     - fix compilation (by Yang Kun)
     - make sure we have data on stderr (by Karel Zak)
     - remove second check for EOF (#2714) (by Thorsten Kukuk)
@@ -1000,6 +1026,13 @@
     - make sure cmdline[] not overflow [coverity scan] (by Karel Zak)
 
 po:
+    - update uk.po (from translationproject.org) (by Yuri Chornoivan)
+    - update ro.po (from translationproject.org) (by Remus-Gabriel Chelu)
+    - update pl.po (from translationproject.org) (by Jakub Bogusz)
+    - update nl.po (from translationproject.org) (by Benno Schulenberg)
+    - update ko.po (from translationproject.org) (by Seong-ho Cho)
+    - update hr.po (from translationproject.org) (by Božidar Putanec)
+    - update fr.po (from translationproject.org) (by Frédéric Marchal)
     - merge changes (by Karel Zak)
     - update nl.po (from translationproject.org) (by Benno Schulenberg)
     - update es.po (from translationproject.org) (by Antonio Ceballos Roa)
@@ -1025,6 +1058,12 @@
 
 po-man:
     - merge changes (by Karel Zak)
+    - add pl.po (from translationproject.org) (by Michał Kułach)
+    - update uk.po (from translationproject.org) (by Yuri Chornoivan)
+    - update ro.po (from translationproject.org) (by Remus-Gabriel Chelu)
+    - update fr.po (from translationproject.org) (by Frédéric Marchal)
+    - fix typos in configuration (by Karel Zak)
+    - merge changes (by Karel Zak)
     - merge changes (by Karel Zak)
     - update uk.po (from translationproject.org) (by Yuri Chornoivan)
     - update sr.po (from translationproject.org) (by Мирослав Николић)
@@ -1112,6 +1151,7 @@
     - Include strings.h header for strncasecmp function (by Jordan Williams)
 
 su:
+    - (man) fix duplicate asterisk (by Gaël PORTAY)
     - use lib/env.c for --whitelist-environment (by Karel Zak)
     - fix use after free in run_shell (by Tanish Yadav)
 
@@ -1125,6 +1165,10 @@
 swapoff:
     - avoid being killed by OOM (by Karel Zak)
 
+swapon:
+    - remove unnecessary variable usage (by Karel Zak)
+    - make options --help and --version override --summary (by Benno 
Schulenberg)
+
 sys-utils:
     - remove redundant comparison in read_hypervisor_dmi in lscpu-virt.c (by 
Anton Moryakov)
     - warns if mqueue fs is not mounted (by Prasanna Paithankar)
@@ -1136,6 +1180,9 @@
     - (setpriv) fix potential memory leak (by Maks Mishin)
     - hwclock-rtc fix pointer usage (by Karthikeyan Krishnasamy)
 
+sys-utils/chmem:
+    - fix typo. (by WanBingjiang)
+
 sys-utils/irq-common:
     - fix SPDX typos (by Karel Zak)
 
@@ -1149,6 +1196,9 @@
     - fix --help typo (foregound > foreground) + alignment (by Emanuele Torre)
     - make -f work (by Emanuele Torre)
 
+terminal-colors.d:
+    - support NO_COLOR (by Karel Zak)
+
 term-utils:
     - make pointer arrays const (by Max Kellermann)
 
@@ -1163,6 +1213,7 @@
     - (cosmetic) remove whitespaces between a function and its arguments (by 
Masatake YAMATO)
 
 tests:
+    - update lsmem outputs (by Karel Zak)
     - (lsns/nsfs) consider the cases that lsns returns multiple paths (by 
Masatake YAMATO)
     - (lsns/nsfs) check test_sysinfo helper (by Masatake YAMATO)
     - improve test_sysinfo to check for NS_GET_NSTYPE usability (by Karel Zak)
@@ -1234,6 +1285,9 @@
     - (lsfd) add a case testing ERROR type appeared in TYPE column (by 
Masatake YAMATO)
     - (test_mkfds::mmap) new factory (by Masatake YAMATO)
 
+test_sysinfo:
+    - remove memory lea [coverity scan] (by Karel Zak)
+
 textual:
     - make two incorrect synopses identical to a better one (by Benno 
Schulenberg)
     - fix three misspellings of "unsupported" (by Benno Schulenberg)
@@ -1254,7 +1308,11 @@
     - depend on systemd... (by Christian Hesse)
     - add and install for uuidd, generate /run/uuidd & /var/lib/libuuid (by 
Christian Hesse)
 
+tools:
+    - add SPDX-License-Identifier (by Karel Zak)
+
 tools/git-grouped-log:
+    - sort output (by Karel Zak)
     - add from master branch (by Karel Zak)
 
 tools/git-tp-sync:
@@ -1270,6 +1328,12 @@
 tools/git-tp-sync-man:
     - remove obsolete script (by Karel Zak)
 
+tools/git-version-bump:
+    - add from master branch (by Karel Zak)
+
+tools/poman-translate:
+    - fix to work outside on source dir (by Karel Zak)
+
 treewide:
     - use scols printf api where possible (by Robin Jarry)
     - use fgetc() instead of getc() (by Thomas Weißschuh)
@@ -1278,6 +1342,8 @@
     - Document loop destroy behavior (by Stanislav Brabec)
 
 unshare:
+    - fix typo in --map-groups=subids map name [coverity scan] (by Karel Zak)
+    - make strings more robust (by Karel Zak)
     - in usage text, reshuffle options into somewhat related groups (by Benno 
Schulenberg)
     - don't mark " (by " and ":" as part of the placeholders|Benno Schulenberg)
     - use single asterisks around long options, double around values (by Benno 
Schulenberg)
@@ -1305,6 +1371,9 @@
     - add support for RFC9562 UUIDs (by Thomas Weißschuh)
     - only report type/version for DCE variant (by Thomas Weißschuh)
 
+various:
+    - (man) list --help and --version last among the options (by Benno 
Schulenberg)
+
 wall:
     - always use utmp as fallback (by Karel Zak)
     - check sysconf() returnvalue (by Karel Zak)
@@ -1338,6 +1407,7 @@
     - add COMP-RATIO column (by Karel Zak)
 
 Misc:
+    - Use ipc_stat::cgid for the column COL_CGID. (by Koutheir Attouchi)
     - remove duplicate includes (by Karel Zak)
     - Defined macros for POSIX IPC compilation and removed path buffer. (by 
Prasanna Paithankar)
     - Fix CodeQL warning (by Prasanna Paithankar)
diff -Nru util-linux-2.41~rc2/include/colors.h util-linux-2.41/include/colors.h
--- util-linux-2.41~rc2/include/colors.h        2025-02-26 13:27:07.503597179 
+0100
+++ util-linux-2.41/include/colors.h    2025-03-18 12:52:41.657620085 +0100
@@ -1,8 +1,9 @@
 /*
- * SPDX-License-Identifier: LGPL-2.1-or-later
+ * No copyright is claimed.  This code is in the public domain; do with
+ * it what you wish.
  *
- * Copyright (C) 2012 Ondrej Oprala <oopr...@redhat.com>
- * Copyright (C) 2012-2014 Karel Zak <k...@redhat.com>
+ * Authors: 2012 Ondrej Oprala <oopr...@redhat.com>
+ *          2012-2025 Karel Zak <k...@redhat.com>
  *
  * This file may be distributed under the terms of the
  * GNU Lesser General Public License.
diff -Nru util-linux-2.41~rc2/include/xalloc.h util-linux-2.41/include/xalloc.h
--- util-linux-2.41~rc2/include/xalloc.h        2025-02-26 13:27:07.506597167 
+0100
+++ util-linux-2.41/include/xalloc.h    2025-03-18 12:52:41.657620085 +0100
@@ -1,11 +1,9 @@
 /*
- * SPDX-License-Identifier: LGPL-2.1-or-later
+ * No copyright is claimed.  This code is in the public domain; do with
+ * it what you wish.
  *
- * Copyright (C) 2010 Davidlohr Bueso <d...@gnu.org>
- * Copyright (C) 2010-2022 Karel Zak <k...@redhat.com>
- *
- * This file may be redistributed under the terms of the
- * GNU Lesser General Public License.
+ * Authors 2010 Davidlohr Bueso <d...@gnu.org>
+ *         2010-2025 Karel Zak <k...@redhat.com>
  *
  * General memory allocation wrappers for malloc, realloc, calloc and strdup
  */
diff -Nru util-linux-2.41~rc2/lib/colors.c util-linux-2.41/lib/colors.c
--- util-linux-2.41~rc2/lib/colors.c    2025-02-26 13:27:07.507597163 +0100
+++ util-linux-2.41/lib/colors.c        2025-03-18 12:52:41.811619376 +0100
@@ -1,8 +1,9 @@
 /*
- * SPDX-License-Identifier: LGPL-2.1-or-later
+ * No copyright is claimed.  This code is in the public domain; do with
+ * it what you wish.
  *
- * Copyright (C) 2012 Ondrej Oprala <oopr...@redhat.com>
- * Copyright (C) 2012-2014 Karel Zak <k...@redhat.com>
+ * Authors: 2012 Ondrej Oprala <oopr...@redhat.com>
+ *          2012-2025 Karel Zak <k...@redhat.com>
  *
  * This file may be distributed under the terms of the
  * GNU Lesser General Public License.
@@ -600,7 +601,9 @@
                cc->mode = mode;
 
        if (cc->mode == UL_COLORMODE_UNDEF
+           && getenv("NO_COLOR") == NULL
            && (ready = colors_terminal_is_ready())) {
+
                int rc = colors_read_configuration(cc);
                if (rc)
                        cc->mode = UL_COLORMODE_DEFAULT;
diff -Nru util-linux-2.41~rc2/libblkid/docs/version.xml 
util-linux-2.41/libblkid/docs/version.xml
--- util-linux-2.41~rc2/libblkid/docs/version.xml       2025-03-06 
12:21:09.771061885 +0100
+++ util-linux-2.41/libblkid/docs/version.xml   2025-03-18 13:52:49.680836400 
+0100
@@ -1 +1 @@
-2.41-rc2
+2.41
diff -Nru util-linux-2.41~rc2/libfdisk/docs/version.xml 
util-linux-2.41/libfdisk/docs/version.xml
--- util-linux-2.41~rc2/libfdisk/docs/version.xml       2025-03-06 
12:21:09.808061729 +0100
+++ util-linux-2.41/libfdisk/docs/version.xml   2025-03-18 13:52:49.735836151 
+0100
@@ -1 +1 @@
-2.41-rc2
+2.41
diff -Nru util-linux-2.41~rc2/liblastlog2/src/tests/tst_write_read_user.c 
util-linux-2.41/liblastlog2/src/tests/tst_write_read_user.c
--- util-linux-2.41~rc2/liblastlog2/src/tests/tst_write_read_user.c     
2025-02-26 13:27:07.520597110 +0100
+++ util-linux-2.41/liblastlog2/src/tests/tst_write_read_user.c 2025-03-17 
12:21:53.060758315 +0100
@@ -42,6 +42,7 @@
 test_args (struct ll2_context *context, const char *user, int64_t ll_time,
           const char *tty, const char *rhost, const char *service)
 {
+       int rc = 1;
        char *error = NULL;
        int64_t res_time;
        char *res_tty = NULL;
@@ -54,7 +55,7 @@
                        free (error);
                } else
                        fprintf (stderr, "ll2_write_entry failed\n");
-               return 1;
+               goto done;
        }
 
        if (ll2_read_entry (context, user, &res_time, &res_tty, &res_rhost, 
&res_service, &error) != 0) {
@@ -63,42 +64,42 @@
                        free (error);
                } else
                        fprintf (stderr, "Unknown error reading database %s", 
context->lastlog2_path);
-               return 1;
+               goto done;
        }
 
        if (ll_time != res_time) {
                fprintf (stderr, "Wrong time: got %lld, expect %lld\n",
                         (long long int)res_time, (long long int)ll_time);
-               return 1;
+               goto done;
        }
 
        if ((tty == NULL && res_tty != NULL) ||
            (tty != NULL && res_tty == NULL) ||
            (tty != NULL && res_tty != NULL && strcmp (tty, res_tty) != 0)) {
                fprintf (stderr, "Wrong tty: got %s, expect %s\n", tty, 
res_tty);
-               return 1;
+               goto done;
        }
 
        if ((rhost == NULL && res_rhost != NULL) ||
            (rhost != NULL && res_rhost == NULL) ||
            (rhost != NULL && res_rhost != NULL && strcmp (rhost, res_rhost) != 
0)) {
                fprintf (stderr, "Wrong rhost: got %s, expect %s\n", rhost, 
res_rhost);
-               return 1;
+               goto done;
        }
 
        if ((service == NULL && res_service != NULL) ||
            (service != NULL && res_service == NULL) ||
            (service != NULL && res_service != NULL && strcmp (service, 
res_service) != 0)) {
                fprintf (stderr, "Wrong service: got %s, expect %s\n", service, 
res_service);
-               return 1;
+               goto done;
        }
 
-
+       rc = 0;
+done:
        free (res_tty);
        free (res_rhost);
        free (res_service);
-
-       return 0;
+       return rc;
 }
 
 int
diff -Nru util-linux-2.41~rc2/libmount/docs/version.xml 
util-linux-2.41/libmount/docs/version.xml
--- util-linux-2.41~rc2/libmount/docs/version.xml       2025-03-06 
12:21:09.844061578 +0100
+++ util-linux-2.41/libmount/docs/version.xml   2025-03-18 13:52:49.790835902 
+0100
@@ -1 +1 @@
-2.41-rc2
+2.41
diff -Nru util-linux-2.41~rc2/libmount/src/context.c 
util-linux-2.41/libmount/src/context.c
--- util-linux-2.41~rc2/libmount/src/context.c  2025-02-26 13:27:07.522597102 
+0100
+++ util-linux-2.41/libmount/src/context.c      2025-03-17 12:21:53.055758334 
+0100
@@ -2023,8 +2023,11 @@
                struct libmnt_opt *opt;
                const char *allowed;
 
-               if (!ol)
+               if (!ol) {
+                       free(*type);
+                       *type = NULL;
                        return -ENOMEM;
+               }
 
                opt = mnt_optlist_get_named(ol,
                                "X-mount.auto-fstypes", cxt->map_userspace);
diff -Nru util-linux-2.41~rc2/libmount/src/hook_loopdev.c 
util-linux-2.41/libmount/src/hook_loopdev.c
--- util-linux-2.41~rc2/libmount/src/hook_loopdev.c     2025-02-26 
13:27:07.523597098 +0100
+++ util-linux-2.41/libmount/src/hook_loopdev.c 2025-03-17 12:21:53.055758334 
+0100
@@ -458,6 +458,7 @@
 
                rc = mnt_context_guess_srcpath_fstype(cxt, &autotype);
                if (rc) {
+                       free(autotype);;
                        DBG(CXT, ul_debugobj(cxt, "failed to guess regfile FS 
type [rc=%d]", rc));
                        return 0;
                }
diff -Nru util-linux-2.41~rc2/libsmartcols/docs/version.xml 
util-linux-2.41/libsmartcols/docs/version.xml
--- util-linux-2.41~rc2/libsmartcols/docs/version.xml   2025-03-06 
12:21:09.881061423 +0100
+++ util-linux-2.41/libsmartcols/docs/version.xml       2025-03-18 
13:52:49.846835648 +0100
@@ -1 +1 @@
-2.41-rc2
+2.41
diff -Nru util-linux-2.41~rc2/login-utils/lslogins.c 
util-linux-2.41/login-utils/lslogins.c
--- util-linux-2.41~rc2/login-utils/lslogins.c  2025-02-26 13:27:07.529597074 
+0100
+++ util-linux-2.41/login-utils/lslogins.c      2025-03-17 12:22:56.229513271 
+0100
@@ -838,13 +838,15 @@
        while (n < ncolumns) {
                switch (columns[n++]) {
                case COL_USER:
-                       user->login = xstrdup(pwd->pw_name);
+                       if (!user->login)
+                               user->login = xstrdup(pwd->pw_name);
                        break;
                case COL_UID:
                        user->uid = pwd->pw_uid;
                        break;
                case COL_GROUP:
-                       user->group = xstrdup(grp->gr_name);
+                       if (!grp->gr_name)
+                               user->group = xstrdup(grp->gr_name);
                        break;
                case COL_GID:
                        user->gid = pwd->pw_gid;
@@ -856,15 +858,20 @@
                                err(EXIT_FAILURE, _("failed to get 
supplementary groups"));
                        break;
                case COL_HOME:
-                       user->homedir = xstrdup(pwd->pw_dir);
+                       if (!user->homedir)
+                               user->homedir = xstrdup(pwd->pw_dir);
                        break;
                case COL_SHELL:
-                       user->shell = xstrdup(pwd->pw_shell);
+                       if (!user->shell)
+                               user->shell = xstrdup(pwd->pw_shell);
                        break;
                case COL_GECOS:
-                       user->gecos = xstrdup(pwd->pw_gecos);
+                       if (!user->gecos)
+                               user->gecos = xstrdup(pwd->pw_gecos);
                        break;
                case COL_LAST_LOGIN:
+                       if (user->last_login)
+                               break;
                        if (user_wtmp) {
                                time = user_wtmp->ut_tv.tv_sec;
                                user->last_login = make_time(ctl->time_mode, 
time);
@@ -876,6 +883,8 @@
                        }
                        break;
                case COL_LAST_TTY:
+                       if (user->last_tty)
+                               break;
                        user->last_tty = xcalloc(1, sizeof(user_wtmp->ut_line) 
+ 1);
                        if (user_wtmp) {
                                mem2strcpy(user->last_tty, user_wtmp->ut_line,
@@ -885,6 +894,8 @@
                                get_lastlog(ctl, user->uid, user->login, 
user->last_tty, LASTLOG_LINE);
                        break;
                case COL_LAST_HOSTNAME:
+                       if (user->last_hostname)
+                               break;
                        user->last_hostname = xcalloc(1, 
sizeof(user_wtmp->ut_host) + 1);
                        if (user_wtmp) {
                                mem2strcpy(user->last_hostname, 
user_wtmp->ut_host,
@@ -894,13 +905,13 @@
                                get_lastlog(ctl, user->uid, user->login, 
user->last_hostname, LASTLOG_HOST);
                        break;
                case COL_FAILED_LOGIN:
-                       if (user_btmp) {
+                       if (!user->failed_login && user_btmp) {
                                time = user_btmp->ut_tv.tv_sec;
                                user->failed_login = make_time(ctl->time_mode, 
time);
                        }
                        break;
                case COL_FAILED_TTY:
-                       if (user_btmp) {
+                       if (!user->failed_tty && user_btmp) {
                                user->failed_tty = 
xmalloc(sizeof(user_btmp->ut_line) + 1);
                                mem2strcpy(user->failed_tty, user_btmp->ut_line,
                                                sizeof(user_btmp->ut_line),
@@ -972,11 +983,11 @@
                                                access(_PATH_VAR_NOLOGIN, F_OK) 
== 0;
                        break;
                case COL_PWD_WARN:
-                       if (shadow && shadow->sp_warn >= 0)
+                       if (!user->pwd_warn && shadow && shadow->sp_warn >= 0)
                                xasprintf(&user->pwd_warn, "%ld", 
shadow->sp_warn);
                        break;
                case COL_PWD_EXPIR:
-                       if (shadow && shadow->sp_expire >= 0)
+                       if (!user->pwd_expire && shadow && shadow->sp_expire >= 
0)
                                user->pwd_expire = make_time(ctl->time_mode == 
TIME_ISO ?
                                                TIME_ISO_SHORT : ctl->time_mode,
                                                shadow->sp_expire * 86400);
@@ -985,17 +996,17 @@
                        /* sp_lstchg is specified in days, showing hours
                         * (especially in non-GMT timezones) would only serve
                         * to confuse */
-                       if (shadow)
+                       if (!user->pwd_ctime && shadow)
                                user->pwd_ctime = make_time(ctl->time_mode == 
TIME_ISO ?
                                                TIME_ISO_SHORT : ctl->time_mode,
                                                shadow->sp_lstchg * 86400);
                        break;
                case COL_PWD_CTIME_MIN:
-                       if (shadow && shadow->sp_min > 0)
+                       if (!user->pwd_ctime_min && shadow && shadow->sp_min > 
0)
                                xasprintf(&user->pwd_ctime_min, "%ld", 
shadow->sp_min);
                        break;
                case COL_PWD_CTIME_MAX:
-                       if (shadow && shadow->sp_max > 0)
+                       if (!user->pwd_ctime_max && shadow && shadow->sp_max > 
0)
                                xasprintf(&user->pwd_ctime_max, "%ld", 
shadow->sp_max);
                        break;
                case COL_SELINUX:
@@ -1006,8 +1017,8 @@
                        break;
                case COL_NPROCS:
 #ifdef __linux__
-
-                       xasprintf(&user->nprocs, "%d", get_nprocs(pwd->pw_uid));
+                       if (!user->nprocs)
+                               xasprintf(&user->nprocs, "%d", 
get_nprocs(pwd->pw_uid));
 #endif
                        break;
                default:
diff -Nru util-linux-2.41~rc2/lsfd-cmd/lsfd.c util-linux-2.41/lsfd-cmd/lsfd.c
--- util-linux-2.41~rc2/lsfd-cmd/lsfd.c 2025-02-26 13:27:07.531597066 +0100
+++ util-linux-2.41/lsfd-cmd/lsfd.c     2025-03-18 13:42:56.568315681 +0100
@@ -872,7 +872,7 @@
                                         bool sockets_only)
 {
        char sym[PATH_MAX] = { '\0' };
-       struct stat sb;
+       struct stat sb = { .st_mode = 0 };
        struct file *f, *prev;
 
        if (ul_path_readlink(pc, sym, sizeof(sym), name) < 0)
@@ -963,7 +963,7 @@
        uint64_t start, end, offset, ino;
        unsigned long major, minor;
        enum association assoc = ASSOC_MEM;
-       struct stat sb;
+       struct stat sb = { .st_mode = 0 };
        struct file *f, *prev;
        char *path, modestr[5];
        dev_t devno;
diff -Nru util-linux-2.41~rc2/Makefile.am util-linux-2.41/Makefile.am
--- util-linux-2.41~rc2/Makefile.am     2025-02-26 13:27:07.494597216 +0100
+++ util-linux-2.41/Makefile.am 2025-03-13 10:17:02.557989997 +0100
@@ -132,23 +132,29 @@
        tools/meson-make-manpage-stub.sh \
        tools/meson-make-symlink.sh \
        \
+       disk-utils/meson.build \
        include/meson.build \
        libblkid/meson.build \
+       libfdisk/meson.build \
+       liblastlog2/man/meson.build \
+       liblastlog2/meson.build \
+       lib/meson.build \
        libmount/meson.build \
        libmount/python/meson.build \
-       misc-utils/meson.build \
        libsmartcols/meson.build \
-       text-utils/meson.build \
-       po/meson.build \
-       po-man/meson.build \
-       lib/meson.build \
+       libuuid/man/meson.build \
        libuuid/meson.build \
-       liblastlog2/meson.build \
+       login-utils/meson.build \
+       lsfd-cmd/meson.build \
+       man-common/meson.build \
+       misc-utils/meson.build \
+       pam_lastlog2/man/meson.build \
+       po-man/meson.build \
+       po/meson.build \
+       schedutils/meson.build \
        sys-utils/meson.build \
-       libfdisk/meson.build \
        term-utils/meson.build \
-       disk-utils/meson.build \
-       login-utils/meson.build
+       text-utils/meson.build
 
 # pylibmountexec module must be installed after usrlib_exec libraries,
 # otherwise the libtool relink step will fail to find libmount.la and
diff -Nru util-linux-2.41~rc2/Makefile.in util-linux-2.41/Makefile.in
--- util-linux-2.41~rc2/Makefile.in     2025-03-06 12:21:00.701099953 +0100
+++ util-linux-2.41/Makefile.in 2025-03-18 13:52:34.538904994 +0100
@@ -6076,13 +6076,17 @@
        tests/expected tests/functions.sh tests/commands.sh \
        tests/run.sh tests/ts meson.build meson_options.txt \
        tools/meson-make-manpage-stub.sh tools/meson-make-symlink.sh \
-       include/meson.build libblkid/meson.build libmount/meson.build \
-       libmount/python/meson.build misc-utils/meson.build \
-       libsmartcols/meson.build text-utils/meson.build po/meson.build \
-       po-man/meson.build lib/meson.build libuuid/meson.build \
-       liblastlog2/meson.build sys-utils/meson.build \
-       libfdisk/meson.build term-utils/meson.build \
-       disk-utils/meson.build login-utils/meson.build \
+       disk-utils/meson.build include/meson.build \
+       libblkid/meson.build libfdisk/meson.build \
+       liblastlog2/man/meson.build liblastlog2/meson.build \
+       lib/meson.build libmount/meson.build \
+       libmount/python/meson.build libsmartcols/meson.build \
+       libuuid/man/meson.build libuuid/meson.build \
+       login-utils/meson.build lsfd-cmd/meson.build \
+       man-common/meson.build misc-utils/meson.build \
+       pam_lastlog2/man/meson.build po-man/meson.build po/meson.build \
+       schedutils/meson.build sys-utils/meson.build \
+       term-utils/meson.build text-utils/meson.build \
        $(PATHFILES:=.in) $(ADOCFILES_COMMON) $(am__append_733) \
        $(am__append_736)
 CLEANFILES = $(am__append_367) errnos.h errnos.h.deps \
diff -Nru util-linux-2.41~rc2/misc-utils/exch.c 
util-linux-2.41/misc-utils/exch.c
--- util-linux-2.41~rc2/misc-utils/exch.c       2025-02-26 13:27:07.533597057 
+0100
+++ util-linux-2.41/misc-utils/exch.c   2025-03-10 14:50:08.752436411 +0100
@@ -26,13 +26,21 @@
 # define RENAME_EXCHANGE (1 << 1)
 #endif
 
-#if !defined(HAVE_RENAMEAT2) && defined(SYS_renameat2)
-static inline int renameat2(int olddirfd, const char *oldpath,
-                           int newdirfd, const char *newpath, unsigned int 
flags)
+static inline int rename_exchange(const char *oldpath, const char *newpath)
 {
-       return syscall (SYS_renameat2, olddirfd, oldpath, newdirfd, newpath, 
flags);
-}
+       int rc;
+
+#if defined(HAVE_RENAMEAT2)
+       rc = renameat2(AT_FDCWD, oldpath, AT_FDCWD, newpath, RENAME_EXCHANGE);
+#elif defined(SYS_renameat2)
+       rc = syscall(SYS_renameat2,
+                    AT_FDCWD, oldpath, AT_FDCWD, newpath, RENAME_EXCHANGE);
+#else
+       rc = -1;
+       errno = ENOSYS;
 #endif
+       return rc;
+}
 
 static void __attribute__((__noreturn__)) usage(void)
 {
@@ -54,7 +62,6 @@
 int main(int argc, char **argv)
 {
        int c;
-       int rc;
 
        static const struct option longopts[] = {
                { "version",    no_argument, NULL, 'V' },
@@ -85,11 +92,11 @@
                errtryhelp(EXIT_FAILURE);
        }
 
-       rc = renameat2(AT_FDCWD, argv[optind],
-                      AT_FDCWD, argv[optind + 1], RENAME_EXCHANGE);
-       if (rc)
+       if (rename_exchange(argv[optind], argv[optind + 1]) != 0) {
                warn(_("failed to exchange \"%s\" and \"%s\""),
                     argv[optind], argv[optind + 1]);
+               return EXIT_FAILURE;
+       }
 
-       return rc == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+       return EXIT_SUCCESS;
 }
diff -Nru util-linux-2.41~rc2/NEWS util-linux-2.41/NEWS
--- util-linux-2.41~rc2/NEWS    2025-03-06 12:14:41.862690110 +0100
+++ util-linux-2.41/NEWS        2025-03-18 13:50:51.815370392 +0100
@@ -1,4 +1,4 @@
-util-linux 2.41-rc2: Mar 06 2025 (the latest and greatest!)
+util-linux 2.41: Mar 18 2025 (the latest and greatest!)
 
  The most recent version (on the first line) may be used as a fallback for
  the ./tools/git-version-gen script.
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/fr.gmo and 
/tmp/ZUgpLkWXkM/util-linux-2.41/po/fr.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/hr.gmo and 
/tmp/ZUgpLkWXkM/util-linux-2.41/po/hr.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/ko.gmo and 
/tmp/ZUgpLkWXkM/util-linux-2.41/po/ko.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/nl.gmo and 
/tmp/ZUgpLkWXkM/util-linux-2.41/po/nl.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/pl.gmo and 
/tmp/ZUgpLkWXkM/util-linux-2.41/po/pl.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/ro.gmo and 
/tmp/ZUgpLkWXkM/util-linux-2.41/po/ro.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/uk.gmo and 
/tmp/ZUgpLkWXkM/util-linux-2.41/po/uk.gmo differ
diff -Nru util-linux-2.41~rc2/po-man/po4a.cfg util-linux-2.41/po-man/po4a.cfg
--- util-linux-2.41~rc2/po-man/po4a.cfg 2025-02-26 13:27:07.556596964 +0100
+++ util-linux-2.41/po-man/po4a.cfg     2025-03-18 13:43:57.618086044 +0100
@@ -1,4 +1,4 @@
-[po4a_langs] cs de es fr ko pt_BR ro sr uk
+[po4a_langs] cs de es fr ko pl pt_BR ro sr uk
 [po4a_paths] util-linux-man.pot $lang:$lang.po
 
 [type:asciidoc] ../man-common/bugreports.adoc    
$lang:$lang/man-common/bugreports.adoc    opt:"--keep 0"
diff -Nru util-linux-2.41~rc2/sys-utils/chmem.c 
util-linux-2.41/sys-utils/chmem.c
--- util-linux-2.41~rc2/sys-utils/chmem.c       2025-02-26 13:27:07.634596647 
+0100
+++ util-linux-2.41/sys-utils/chmem.c   2025-03-10 14:51:10.016191026 +0100
@@ -367,7 +367,7 @@
        int c, rc;
 
        static const struct option longopts[] = {
-               {"block",       no_argument,            NULL, 'b'},
+               {"blocks",      no_argument,            NULL, 'b'},
                {"disable",     no_argument,            NULL, 'd'},
                {"enable",      no_argument,            NULL, 'e'},
                {"help",        no_argument,            NULL, 'h'},
diff -Nru util-linux-2.41~rc2/sys-utils/hwclock-rtc.c 
util-linux-2.41/sys-utils/hwclock-rtc.c
--- util-linux-2.41~rc2/sys-utils/hwclock-rtc.c 2025-02-26 13:27:07.635596642 
+0100
+++ util-linux-2.41/sys-utils/hwclock-rtc.c     2025-03-17 12:21:53.078758245 
+0100
@@ -431,6 +431,9 @@
 {
        const struct hwclock_param *param = &hwclock_params[0];
 
+       if (!alias)
+               return 1;
+
        while (param->name) {
                if (!strcmp(alias, param->name)) {
                        *value = param->id;
diff -Nru util-linux-2.41~rc2/sys-utils/irqtop.c 
util-linux-2.41/sys-utils/irqtop.c
--- util-linux-2.41~rc2/sys-utils/irqtop.c      2025-03-06 12:13:49.294910641 
+0100
+++ util-linux-2.41/sys-utils/irqtop.c  2025-03-18 13:42:56.678315267 +0100
@@ -391,6 +391,9 @@
        };
 
        setlocale(LC_ALL, "");
+       bindtextdomain(PACKAGE, LOCALEDIR);
+       textdomain(PACKAGE);
+       close_stdout_atexit();
 
        parse_args(&ctl, &out, argc, argv);
 
diff -Nru util-linux-2.41~rc2/sys-utils/lscpu-arm.c 
util-linux-2.41/sys-utils/lscpu-arm.c
--- util-linux-2.41~rc2/sys-utils/lscpu-arm.c   2025-02-26 13:27:07.637596634 
+0100
+++ util-linux-2.41/sys-utils/lscpu-arm.c       2025-03-10 14:50:28.311358057 
+0100
@@ -93,10 +93,14 @@
     { 0xd80, "Cortex-A520" },
     { 0xd81, "Cortex-A720" },
     { 0xd82, "Cortex-X4" },
+    { 0xd83, "Neoverse-V3AE" },
     { 0xd84, "Neoverse-V3" },
     { 0xd85, "Cortex-X925" },
     { 0xd87, "Cortex-A725" },
+    { 0xd88, "Cortex-A520AE" },
+    { 0xd89, "Cortex-A720AE" },
     { 0xd8e, "Neoverse-N3" },
+    { 0xd8f, "Cortex-A320" },
     { -1, "unknown" },
 };
 
diff -Nru util-linux-2.41~rc2/sys-utils/lsipc.c 
util-linux-2.41/sys-utils/lsipc.c
--- util-linux-2.41~rc2/sys-utils/lsipc.c       2025-02-26 13:27:07.637596634 
+0100
+++ util-linux-2.41/sys-utils/lsipc.c   2025-03-17 12:29:55.819883683 +0100
@@ -926,7 +926,7 @@
                                        rc = scols_line_refer_data(ln, n, arg);
                                break;
                        case COL_CGID:
-                               rc = scols_line_sprintf(ln, n, "%u", 
p->msg_perm.cuid);
+                               rc = scols_line_sprintf(ln, n, "%u", 
p->msg_perm.cgid);
                                break;
                        case COL_CGROUP:
                                arg = get_groupname(&gr, p->msg_perm.cgid);
diff -Nru util-linux-2.41~rc2/sys-utils/lsirq.c 
util-linux-2.41/sys-utils/lsirq.c
--- util-linux-2.41~rc2/sys-utils/lsirq.c       2025-03-06 12:13:49.294910641 
+0100
+++ util-linux-2.41/sys-utils/lsirq.c   2025-03-18 13:42:56.679315263 +0100
@@ -105,6 +105,9 @@
        int softirq = 0;
 
        setlocale(LC_ALL, "");
+       bindtextdomain(PACKAGE, LOCALEDIR);
+       textdomain(PACKAGE);
+       close_stdout_atexit();
 
        while ((c = getopt_long(argc, argv, "no:s:t:C:ShJPV", longopts, NULL)) 
!= -1) {
                err_exclusive_options(c, longopts, excl, excl_st);
diff -Nru util-linux-2.41~rc2/sys-utils/swapon.c 
util-linux-2.41/sys-utils/swapon.c
--- util-linux-2.41~rc2/sys-utils/swapon.c      2025-02-26 13:27:07.640596622 
+0100
+++ util-linux-2.41/sys-utils/swapon.c  2025-03-17 12:19:15.138370990 +0100
@@ -145,6 +145,7 @@
                no_heading,             /* toggle --show headers */
                raw,                    /* toggle --show alignment */
                show,                   /* display --show information */
+               summarize,              /* display summary of swap use */
                verbose;                /* be chatty */
 };
 
@@ -965,8 +966,8 @@
                        ctl.fix_page_size = 1;
                        break;
                case 's':               /* status report */
-                       status = display_summary();
-                       return status;
+                       ctl.summarize = 1;
+                       break;
                case 'v':               /* be chatty */
                        ctl.verbose = 1;
                        break;
@@ -1007,6 +1008,9 @@
        }
        argv += optind;
 
+       if (ctl.summarize)
+               return display_summary();
+
        if (ctl.show || (!ctl.all && !numof_labels() && !numof_uuids() && *argv 
== NULL)) {
                if (!ctl.ncolumns) {
                        /* default columns */
@@ -1016,8 +1020,7 @@
                        ctl.columns[ctl.ncolumns++] = COL_USED;
                        ctl.columns[ctl.ncolumns++] = COL_PRIO;
                }
-               status = show_table(&ctl);
-               return status;
+               return show_table(&ctl);
        }
 
        if (ctl.props.no_fail && !ctl.all) {
diff -Nru util-linux-2.41~rc2/sys-utils/unshare.c 
util-linux-2.41/sys-utils/unshare.c
--- util-linux-2.41~rc2/sys-utils/unshare.c     2025-03-04 19:14:02.601173534 
+0100
+++ util-linux-2.41/sys-utils/unshare.c 2025-03-17 13:57:12.789532733 +0100
@@ -737,7 +737,7 @@
 
        flags = strrchr(interp, ':');
 
-       return strchr(flags, 'F') != NULL;
+       return flags && strchr(flags, 'F') != NULL;
 }
 
 static void load_interp(const char *binfmt_mnt, const char *interp)
@@ -1005,7 +1005,7 @@
                                insert_map_range(&groupmap,
                                                 read_subid_range(_PATH_SUBGID, 
real_euid, 0));
                        else if (!strcmp(optarg, "subids"))
-                               insert_map_range(&usermap,
+                               insert_map_range(&groupmap,
                                                 read_subid_range(_PATH_SUBGID, 
real_euid, 1));
                        else if (!strcmp(optarg, "all"))
                                read_kernel_map(&groupmap, _PATH_PROC_GIDMAP);
diff -Nru util-linux-2.41~rc2/.tarball-version util-linux-2.41/.tarball-version
--- util-linux-2.41~rc2/.tarball-version        2025-03-06 12:25:41.213978539 
+0100
+++ util-linux-2.41/.tarball-version    2025-03-18 13:56:05.329195960 +0100
@@ -1 +1 @@
-2.41-rc2
+2.41
diff -Nru util-linux-2.41~rc2/tests/helpers/test_sysinfo.c 
util-linux-2.41/tests/helpers/test_sysinfo.c
--- util-linux-2.41~rc2/tests/helpers/test_sysinfo.c    2025-03-05 
14:17:30.356392119 +0100
+++ util-linux-2.41/tests/helpers/test_sysinfo.c        2025-03-17 
12:21:53.049758357 +0100
@@ -215,6 +215,7 @@
 {
        char * h = xgethostname();
        printf("%s\n", h);
+       free(h);
        return 0;
 }
 
diff -Nru util-linux-2.41~rc2/text-utils/more.c 
util-linux-2.41/text-utils/more.c
--- util-linux-2.41~rc2/text-utils/more.c       2025-02-26 13:27:07.722596289 
+0100
+++ util-linux-2.41/text-utils/more.c   2025-03-17 12:24:23.810173287 +0100
@@ -1684,6 +1684,9 @@
                        continue;
                if (cmd.key == more_kc_repeat_previous)
                        cmd = ctl->previous_command;
+               else
+                       ctl->previous_command = cmd;
+
                switch (cmd.key) {
                case more_kc_backwards:
                        if (ctl->no_tty_in) {
@@ -1849,7 +1852,6 @@
                        fflush(NULL);
                        break;
                }
-               ctl->previous_command = cmd;
                if (done) {
                        cmd.key = more_kc_unknown_command;
                        break;
@@ -2095,7 +2097,6 @@
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
        close_stdout_atexit();
-       setlocale(LC_ALL, "");
 
        /* Auto set no scroll on when binary is called page */
        if (!(strcmp(program_invocation_short_name, "page")))
diff -Nru util-linux-2.41~rc2/tools/git-tp-sync 
util-linux-2.41/tools/git-tp-sync
--- util-linux-2.41~rc2/tools/git-tp-sync       2025-03-06 12:13:49.294910641 
+0100
+++ util-linux-2.41/tools/git-tp-sync   2025-03-18 13:42:56.679315263 +0100
@@ -1,20 +1,17 @@
 #!/bin/bash
 #
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
 # git-tp-sync - downloads the latest PO files from translationproject.org
 #               and commits changes to your GIT repository.
 #
 # Copyright (C) 2007-2025 Karel Zak <k...@redhat.com>
 #
-# This file is free software; you can redistribute it and/or modify
+# This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.
 #
-# This file is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
 declare -A TP_PROJECTS
 
 # Define local directories and project names on TP.org
diff -Nru util-linux-2.41~rc2/tools/git-version-gen 
util-linux-2.41/tools/git-version-gen
--- util-linux-2.41~rc2/tools/git-version-gen   2025-03-06 12:13:49.294910641 
+0100
+++ util-linux-2.41/tools/git-version-gen       2025-03-18 13:42:56.680315260 
+0100
@@ -1,4 +1,7 @@
 #!/bin/sh
+# 
+# SPDX-License-Identifier: GPL-3.0-or-later 
+#
 # Print a version string.
 scriptversion=2011-02-19.19; # UTC
 
diff -Nru util-linux-2.41~rc2/tools/poman-translate.sh 
util-linux-2.41/tools/poman-translate.sh
--- util-linux-2.41~rc2/tools/poman-translate.sh        2025-02-26 
13:27:07.724596281 +0100
+++ util-linux-2.41/tools/poman-translate.sh    2025-03-17 12:16:24.077000919 
+0100
@@ -90,13 +90,16 @@
 PO4A_TRANSLATE_ONLY_FLAGS=()
 for LOCALE in "${LOCALES[@]}"; do
     for ADOC in "${ADOCS[@]}"; do
-        if [[ ! " ${PO4ACFG_TRANSLATIONS[*]} " =~ .*${ADOC}[[:space:]] ]]; then
-         echo "Untranslated: $LOCALE: $ADOC"
-          continue
+       if [[ "$ADOC" == *"/man-common/manpage-stub.adoc" ]]; then
+           continue
+       fi
+       ADOC_NAME=$(basename "$ADOC")
+        if [[ ! " ${PO4ACFG_TRANSLATIONS[*]} " =~ .*${ADOC_NAME}[[:space:]] 
]]; then
+           echo "unconfigured in $PO4ACFG: $ADOC"
+            continue
         fi
         PO4A_TRANSLATE_ONLY_FLAGS+=("--translate-only")
-        ADOC_NAME=$(basename "$ADOC")
-        if [[ "$ADOC" == *"/man-common/"* ]]; then
+       if [[ "$ADOC" == *"/man-common/"* ]]; then
             PO4A_TRANSLATE_ONLY_FLAGS+=("$LOCALE/man-common/$ADOC_NAME")
         else
             MANADOCS+=("$LOCALE/$ADOC_NAME")
diff -Nru util-linux-2.41~rc2/.version util-linux-2.41/.version
--- util-linux-2.41~rc2/.version        2025-03-06 12:21:11.388055098 +0100
+++ util-linux-2.41/.version    2025-03-18 13:52:51.337828894 +0100
@@ -1 +1 @@
-2.41-rc2
+2.41

Reply via email to