]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
socket: downgrade not-supported logging for SO_PASSSEC
authorLuca Boccassi <luca.boccassi@gmail.com>
Mon, 9 Jun 2025 16:24:24 +0000 (17:24 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 25 Jun 2025 17:17:42 +0000 (18:17 +0100)
Kernel 6.16 started returning EOPNOTSUPP when a required kconfig
is disabled. Downgrade to debug level in that case.

Fixes https://github.com/systemd/systemd/issues/37783

(cherry picked from commit bb887cf22e68b6c83ff8a9c9bccda04d95ac23b3)
(cherry picked from commit 42cc4991976821d33b094a4d3787cd6b80a8fbdb)

src/core/socket.c
src/journal/journald-native.c
src/journal/journald-syslog.c

index 762984536294d1ded7052a16a23b314305d1863a..d19484019f9c0c8de361c083ef0d99f00c1dd7c0 100644 (file)
@@ -1037,7 +1037,7 @@ static void socket_apply_socket_options(Socket *s, SocketPort *p, int fd) {
         if (s->pass_sec) {
                 r = setsockopt_int(fd, SOL_SOCKET, SO_PASSSEC, true);
                 if (r < 0)
-                        log_unit_warning_errno(UNIT(s), r, "SO_PASSSEC failed: %m");
+                        log_unit_full_errno(UNIT(s), ERRNO_IS_NEG_NOT_SUPPORTED(r) ? LOG_DEBUG : LOG_WARNING, r, "SO_PASSSEC failed: %m");
         }
 
         if (s->pass_pktinfo) {
index 0600102d327966d5d4e6ce9ed835769e641806c1..417f2c5b88a8dd74e81f0ede0ea891e2af92ed70 100644 (file)
@@ -7,6 +7,7 @@
 #include <unistd.h>
 
 #include "alloc-util.h"
+#include "errno-util.h"
 #include "fd-util.h"
 #include "fs-util.h"
 #include "iovec-util.h"
@@ -490,7 +491,7 @@ int server_open_native_socket(Server *s, const char *native_socket) {
         if (mac_selinux_use()) {
                 r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_PASSSEC, true);
                 if (r < 0)
-                        log_warning_errno(r, "SO_PASSSEC failed: %m");
+                        log_full_errno(ERRNO_IS_NEG_NOT_SUPPORTED(r) ? LOG_DEBUG : LOG_WARNING, r, "SO_PASSSEC failed: %m");
         }
 
         r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_TIMESTAMP, true);
index 4ad73ed38717edc421fcc727c3e076b8881caccc..2506f50f2cd9dbee65ff93675d1ea53d25bf3ed7 100644 (file)
@@ -7,6 +7,7 @@
 #include "sd-messages.h"
 
 #include "alloc-util.h"
+#include "errno-util.h"
 #include "fd-util.h"
 #include "format-util.h"
 #include "iovec-util.h"
@@ -492,7 +493,7 @@ int server_open_syslog_socket(Server *s, const char *syslog_socket) {
         if (mac_selinux_use()) {
                 r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_PASSSEC, true);
                 if (r < 0)
-                        log_warning_errno(r, "SO_PASSSEC failed: %m");
+                        log_full_errno(ERRNO_IS_NEG_NOT_SUPPORTED(r) ? LOG_DEBUG : LOG_WARNING, r, "SO_PASSSEC failed: %m");
         }
 
         r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_TIMESTAMP, true);