From: Yu Watanabe Date: Sun, 21 Jan 2024 04:11:09 +0000 (+0900) Subject: pam: do not warn closing bus connection which is opened after the fork X-Git-Tag: v256-rc1~976^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=34e4ad1796a42da64e196f9c6965f1a073e6dd9d;p=thirdparty%2Fsystemd.git pam: do not warn closing bus connection which is opened after the fork In pam_systemd.so and pam_systemd_home.so, we open a bus connection on session close, which is called after fork. Closing the connection is harmless, and should not warn about that. This suppresses the following log message: === (sd-pam)[127]: PAM Attempted to close sd-bus after fork, this should not happen. === --- diff --git a/src/shared/pam-util.c b/src/shared/pam-util.c index 13b68234c9b..fe58203e273 100644 --- a/src/shared/pam-util.c +++ b/src/shared/pam-util.c @@ -5,6 +5,7 @@ #include #include "alloc-util.h" +#include "bus-internal.h" #include "errno-util.h" #include "format-util.h" #include "macro.h" @@ -88,8 +89,13 @@ static void pam_bus_data_destroy(pam_handle_t *handle, void *data, int error_sta * internally anyway. That said, we still generate a warning message, since this really shouldn't * happen. */ - if (error_status & PAM_DATA_SILENT) - pam_syslog(handle, LOG_DEBUG, "Attempted to close sd-bus after fork, this should not happen."); + if (!data) + return; + + PamBusData *d = data; + if (FLAGS_SET(error_status, PAM_DATA_SILENT) && + d->bus && bus_origin_changed(d->bus)) + pam_syslog(handle, LOG_DEBUG, "Attempted to close sd-bus after fork whose connection is opened before the fork, this should not happen."); pam_bus_data_free(data); }