Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package nfs-utils for openSUSE:Factory 
checked in at 2026-03-14 22:20:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nfs-utils (Old)
 and      /work/SRC/openSUSE:Factory/.nfs-utils.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "nfs-utils"

Sat Mar 14 22:20:57 2026 rev:191 rq:1338694 version:unknown

Changes:
--------
--- /work/SRC/openSUSE:Factory/nfs-utils/nfs-utils.changes      2026-03-11 
20:50:09.613220425 +0100
+++ /work/SRC/openSUSE:Factory/.nfs-utils.new.8177/nfs-utils.changes    
2026-03-14 22:21:23.610642083 +0100
@@ -1,0 +2,7 @@
+Fri Mar 13 10:34:11 UTC 2026 - Anthony Iliopoulos <[email protected]>
+
+- Fix nfsrahead crash (bsc#1259595)
+  - Add nfsrahead-quieten-misleading-error-for-non-NFS-block-devic.patch
+  - Add nfsrahead-zero-initialise-device_info-struct.patch
+
+-------------------------------------------------------------------

New:
----
  nfsrahead-quieten-misleading-error-for-non-NFS-block-devic.patch
  nfsrahead-zero-initialise-device_info-struct.patch

----------(New B)----------
  New:- Fix nfsrahead crash (bsc#1259595)
  - Add nfsrahead-quieten-misleading-error-for-non-NFS-block-devic.patch
  - Add nfsrahead-zero-initialise-device_info-struct.patch
  New:  - Add nfsrahead-quieten-misleading-error-for-non-NFS-block-devic.patch
  - Add nfsrahead-zero-initialise-device_info-struct.patch
----------(New E)----------

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

Other differences:
------------------
++++++ nfs-utils.spec ++++++
--- /var/tmp/diff_new_pack.p3IIts/_old  2026-03-14 22:21:24.522679837 +0100
+++ /var/tmp/diff_new_pack.p3IIts/_new  2026-03-14 22:21:24.526680004 +0100
@@ -1,7 +1,6 @@
 #
 # spec file for package nfs-utils
 #
-# Copyright (c) 2026 SUSE LLC
 # Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
@@ -44,6 +43,8 @@
 Source25:       rpc-svcgssd.options.conf
 Source26:       nfs.conf
 Source27:       nfs-utils.tmpfiles.conf
+Patch0:         
nfsrahead-quieten-misleading-error-for-non-NFS-block-devic.patch
+Patch1:         nfsrahead-zero-initialise-device_info-struct.patch
 BuildRequires:  e2fsprogs-devel
 BuildRequires:  gcc-c++
 BuildRequires:  libtool



++++++ nfsrahead-quieten-misleading-error-for-non-NFS-block-devic.patch ++++++
From: Aaron Tomlin <[email protected]>
Date: Wed, 11 Mar 2026 15:14:16 -0400
Subject: nfsrahead: quieten misleading error for non-NFS block devices
Git-repo: git://git.linux-nfs.org/projects/steved/nfs-utils.git
Git-commit: 3395a0aa79286ce9c3df283fd9fb6db14dbbc333
References: bsc#1259595

When get_device_info() evaluates a physical block device via the
fast-path rejection logic, it deliberately returns -ENODEV.

Previously, main() handled this by logging a D_GENERAL error ("unable to
find device"). Because udev invokes nfsrahead for all block devices
across the system, this results in misleading journal spam for devices
that were intentionally skipped, rather than genuinely missing.

Update the error handling logic in main() to explicitly catch the
-ENODEV return code. When encountered, log a more accurate "skipping
non-NFS device" message at the D_ALL debugging level. This prevents
unnecessary journal noise whilst maintaining the existing behaviour of
returning the errno exit status.

Reported-by: Yi Zhang <[email protected]>
Tested-by: Yi Zhang <[email protected]>
Signed-off-by: Aaron Tomlin <[email protected]>
Signed-off-by: Steve Dickson <[email protected]>
Acked-by: Anthony Iliopoulos <[email protected]>
---
 tools/nfsrahead/main.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/nfsrahead/main.c b/tools/nfsrahead/main.c
index 33487f37badb..86c7fcc6d30c 100644
--- a/tools/nfsrahead/main.c
+++ b/tools/nfsrahead/main.c
@@ -218,7 +218,11 @@ int main(int argc, char **argv)
        if ((argc - optind) != 1)
                xlog_err("expected the device number of a BDI; is udev ok?");
 
-       if ((ret = get_device_info(argv[optind], &device)) != 0 || 
device.fstype == NULL) {
+       ret = get_device_info(argv[optind], &device);
+       if (ret == -ENODEV) {
+               xlog(D_ALL, "skipping non-NFS device %s\n", argv[optind]);
+               goto out;
+       } else if (ret != 0 || device.fstype == NULL) {
                xlog(D_GENERAL, "unable to find device %s\n", argv[optind]);
                goto out;
        }


++++++ nfsrahead-zero-initialise-device_info-struct.patch ++++++
From: Aaron Tomlin <[email protected]>
Date: Wed, 11 Mar 2026 12:41:28 -0400
Subject: nfsrahead: zero-initialise device_info struct
Git-repo: git://git.linux-nfs.org/projects/steved/nfs-utils.git
Git-commit: 20fa4785ce5235c41fd27044d7fdef377dd0e088
References: bsc#1259595

A recent commit introduced a fast-path rejection mechanism to prevent
udev worker thread exhaustion. However, this optimisation exposed a bug
in the initialisation of the device_info struct in main().

When the fast-path is triggered (e.g., for a physical block device like
8:16), get_device_info() instantly returns -ENODEV. Because this early
exit occurs before get_mountinfo() is invoked, init_device_info() is
never called.

Consequently, the device_info struct remains populated with
uninitialised stack memory. When main() catches the error and jumps to
the cleanup path, free_device_info() attempts to call free() on garbage
pointers, resulting in a glibc abort(3).

Fix this by explicitly zero-initialising the device_info struct at
declaration, preventing the cleanup path from freeing uninitialised
memory during an early exit.

Fixes: 0f5fe65d ("nfsrahead: fix udev worker exhaustion by skipping non-NFS 
devices")
Reported-by: Yi Zhang <[email protected]>
Tested-by: Yi Zhang <[email protected]>
Signed-off-by: Aaron Tomlin <[email protected]>
Signed-off-by: Steve Dickson <[email protected]>
Acked-by: Anthony Iliopoulos <[email protected]>
---
 tools/nfsrahead/main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/nfsrahead/main.c b/tools/nfsrahead/main.c
index 78cd2581e8c5..33487f37badb 100644
--- a/tools/nfsrahead/main.c
+++ b/tools/nfsrahead/main.c
@@ -191,7 +191,7 @@ static int conf_get_readahead(const char *kind) {
 int main(int argc, char **argv)
 {
        int ret = 0, opt;
-       struct device_info device;
+       struct device_info device = { 0 };
        unsigned int readahead = 128, log_level, log_stderr = 0;
 
 

Reply via email to