>From 3f662e72d51caea74370e07a3d5bad66f020423d Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Wed, 16 Apr 2025 22:05:40 +0200 Subject: [PATCH] net, pidfd: report EINVAL for ESRCH dbus-broker relies -EINVAL being returned to indicate ESRCH in [1]. This causes issues for some workloads as reported in [2]. Paper over it until this is fixed in userspace. Link: https://github.com/bus1/dbus-broker/blob/5d34d91b138fc802a016aa68c093eb81ea31139c/src/util/sockopt.c#L241 [1] Link: https://lore.kernel.org/20250415223454.GA1852104@ax162 [2] Signed-off-by: Christian Brauner --- net/core/sock.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/net/core/sock.c b/net/core/sock.c index f67a3c5b0988..ed8e7fd36284 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1893,8 +1893,16 @@ int sk_getsockopt(struct sock *sk, int level, int optname, pidfd = pidfd_prepare(peer_pid, 0, &pidfd_file); put_pid(peer_pid); - if (pidfd < 0) + if (pidfd < 0) { + /* + * dbus-broker relies -EINVAL being returned to + * indicate ESRCH. Paper over it until this is + * fixed in userspace. + */ + if (pidfd == -ESRCH) + pidfd = -EINVAL; return pidfd; + } if (copy_to_sockptr(optval, &pidfd, len) || copy_to_sockptr(optlen, &len, sizeof(int))) { -- 2.47.2