From 47bb0b8c293f4d730d6739fe8e20039e8887a724 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 25 Apr 2024 12:43:19 +0200 Subject: [PATCH 1/2] errno-util: consider ENOPROTOOPT another "not supported" It's generated by not supported getsocktopt()/setsockopt() options, and it's just another way for saying "not supported", hence treat it as such. --- src/basic/errno-util.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/basic/errno-util.h b/src/basic/errno-util.h index 27804e6382..48b76e4bf7 100644 --- a/src/basic/errno-util.h +++ b/src/basic/errno-util.h @@ -167,7 +167,8 @@ static inline bool ERRNO_IS_NEG_NOT_SUPPORTED(intmax_t r) { -EAFNOSUPPORT, -EPFNOSUPPORT, -EPROTONOSUPPORT, - -ESOCKTNOSUPPORT); + -ESOCKTNOSUPPORT, + -ENOPROTOOPT); } _DEFINE_ABS_WRAPPER(NOT_SUPPORTED); From 78ef66354cd4f24c157f7688e519597a69ceff99 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 25 Apr 2024 12:44:00 +0200 Subject: [PATCH 2/2] varlink: fix varlink_get_peer_pidref() fallback let's properly handle old kernels that have no pidfd, and use regular pids in that case, as intended originally. --- src/shared/varlink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/varlink.c b/src/shared/varlink.c index f1c00a21b6..d96967b8e6 100644 --- a/src/shared/varlink.c +++ b/src/shared/varlink.c @@ -2871,7 +2871,7 @@ int varlink_get_peer_pidref(Varlink *v, PidRef *ret) { * authentication. */ r = varlink_acquire_pidfd(v); - if (r < 0) + if (r < 0 && !ERRNO_IS_NEG_NOT_SUPPORTED(r)) return r; if (v->peer_pidfd < 0) {