https://bugs.gentoo.org/969686 https://github.com/bus1/dbus-broker/pull/409 From ef7c0fd47f035553cb7ba606ce43613c62f1fc66 Mon Sep 17 00:00:00 2001 From: David Rheinsberg Date: Thu, 4 Sep 2025 10:23:36 +0200 Subject: [PATCH] test/sockopt: loosen verification of stale pidfds Newer kernels now properly return stale pidfds from AF_UNIX sockets, rather than refusing the operation. Ensure that our tests adopt to this and properly verify staleness. Signed-off-by: David Rheinsberg --- src/util/test-sockopt.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/util/test-sockopt.c b/src/util/test-sockopt.c index 04148afa..eaa8fba6 100644 --- a/src/util/test-sockopt.c +++ b/src/util/test-sockopt.c @@ -81,17 +81,25 @@ static void test_peerpidfd_client( r = sockopt_get_peerpidfd(fd, &pidfd); if (r != SOCKOPT_E_UNSUPPORTED) { - if (stale) { - c_assert(r == SOCKOPT_E_REAPED); + if (r == SOCKOPT_E_REAPED) { + /* + * Old kernels refused to return stale pidfds. Hence, + * in that case verify that we expected a stale pidfd. + */ + c_assert(stale); } else { c_assert(!r); c_assert(pidfd >= 0); r = proc_resolve_pidfd(pidfd, &pid_socket); c_assert(!r); - c_assert(pid_socket > 0); - c_assert(pid_socket == pid_server); + if (stale) { + c_assert(pid_socket == -1); + } else { + c_assert(pid_socket > 0); + c_assert(pid_socket == pid_server); + } } } }