projects
/
linux-block.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
0a36bad
)
net, pidfd: report EINVAL for ESRCH
author
Christian Brauner
<brauner@kernel.org>
Wed, 16 Apr 2025 20:05:40 +0000
(22:05 +0200)
committer
Christian Brauner
<brauner@kernel.org>
Thu, 17 Apr 2025 07:43:26 +0000
(09:43 +0200)
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://lore.kernel.org/20250416-gegriffen-tiefbau-70cfecb80ac8@brauner
Link:
https://github.com/bus1/dbus-broker/blob/5d34d91b138fc802a016aa68c093eb81ea31139c/src/util/sockopt.c#L241
Link:
https://lore.kernel.org/20250415223454.GA1852104@ax162
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
net/core/sock.c
patch
|
blob
|
blame
|
history
diff --git
a/net/core/sock.c
b/net/core/sock.c
index f67a3c5b09884b322c652e4e302f257adf4b6f1c..b969d2210656473c1d77755ec337d59db90be247 100644
(file)
--- 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 on -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))) {