From nobody Tue Dec 16 03:19:53 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1739437046941892.4657631446063; Thu, 13 Feb 2025 00:57:26 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id E39121E6B; Thu, 13 Feb 2025 03:57:25 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 41AF51E8F; Thu, 13 Feb 2025 03:56:50 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 7F2591975; Thu, 13 Feb 2025 03:56:46 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 960D01791 for ; Thu, 13 Feb 2025 03:56:45 -0500 (EST) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-679-CI2SAmcgMjCNmYzqteyaZg-1; Thu, 13 Feb 2025 03:56:43 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 68BD118D95EA for ; Thu, 13 Feb 2025 08:56:42 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.3.236]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B17EC1800352 for ; Thu, 13 Feb 2025 08:56:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739437005; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6nw1LhXylhTpJk9/jIjY01//rFzYWZjeBcFBI2fnvnY=; b=LyhtYpRtCP/CsqQgFCk1Fe6WNU8nXZ/JIbcGoqzXpuDh/n4HC3X2AuPmWZm8Nty0fO6csN v0m9GCRQe61wS+eXq5EWG5uGYwxjLdsmk6+Rw3teaYBAfTTi69NLOXyhKwFxJpspaYqs3G j4oB6NlB9U/qnJIz1GROPdT62dsqVYU= X-MC-Unique: CI2SAmcgMjCNmYzqteyaZg-1 X-Mimecast-MFC-AGG-ID: CI2SAmcgMjCNmYzqteyaZg From: Michal Privoznik To: devel@lists.libvirt.org Subject: [PATCH 1/2] virgdbus: Introduce virGDBusHasSessionBus() Date: Thu, 13 Feb 2025 09:56:36 +0100 Message-ID: <0a52edfa6874fab3671008ca7ab4cf9c06720099.1739436981.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: agQ3XTZMgKtXAtnREbp378JAN-85bPUvwAV8Ne0m1Cc_1739437002 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: J4KNEHLFHQWUNOZKDUYPEY5GONEU3ZHC X-Message-ID-Hash: J4KNEHLFHQWUNOZKDUYPEY5GONEU3ZHC X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1739437049347019100 Content-Type: text/plain; charset="utf-8"; x-default="true" This is just like virGDBusHasSystemBus() except it checks for the session bus instead of the system one. Signed-off-by: Michal Privoznik Reviewed-by: Andrea Bolognani --- src/libvirt_private.syms | 1 + src/util/virgdbus.c | 50 ++++++++++++++++++++++++++++++++++++---- src/util/virgdbus.h | 3 +++ 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index bd9564f2a7..30a9f806f0 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2496,6 +2496,7 @@ virGDBusCloseSystemBus; virGDBusErrorIsUnknownMethod; virGDBusGetSessionBus; virGDBusGetSystemBus; +virGDBusHasSessionBus; virGDBusHasSystemBus; virGDBusIsServiceEnabled; virGDBusIsServiceRegistered; diff --git a/src/util/virgdbus.c b/src/util/virgdbus.c index 71ca3cd43b..dd3c6d77b4 100644 --- a/src/util/virgdbus.c +++ b/src/util/virgdbus.c @@ -113,8 +113,8 @@ virGDBusSessionBusInit(void) } =20 =20 -GDBusConnection * -virGDBusGetSessionBus(void) +static GDBusConnection * +virGDBusGetSessionBusInternal(void) { if (virOnce(&sessionOnce, virGDBusSessionBusInit) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -122,14 +122,56 @@ virGDBusGetSessionBus(void) return NULL; } =20 - if (!sessionBus) { + return sessionBus; +} + + +GDBusConnection * +virGDBusGetSessionBus(void) +{ + GDBusConnection *bus =3D virGDBusGetSessionBusInternal(); + + if (!bus) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Unable to get session bus connection: %1$s"), sessionError->message); return NULL; } =20 - return sessionBus; + return bus; +} + + +/** + * virGDBusHasSessionBus: + * + * Check if DBus session bus is running. This does not imply that we have + * a connection. DBus might be running and refusing connections due to its + * client limit. The latter must be treated as a fatal error. + * + * Return false if dbus is not available, true if probably available. + */ +bool +virGDBusHasSessionBus(void) +{ + g_autofree char *name =3D NULL; + + if (virGDBusGetSessionBusInternal()) + return true; + + if (!g_dbus_error_is_remote_error(sessionError)) + return false; + + name =3D g_dbus_error_get_remote_error(sessionError); + + if (name && + (STREQ(name, "org.freedesktop.DBus.Error.FileNotFound") || + STREQ(name, "org.freedesktop.DBus.Error.NoServer"))) { + VIR_DEBUG("System bus not available: %s", NULLSTR(sessionError->me= ssage)); + return false; + } + + return true; } =20 =20 diff --git a/src/util/virgdbus.h b/src/util/virgdbus.h index ca7073e27c..dfe6138112 100644 --- a/src/util/virgdbus.h +++ b/src/util/virgdbus.h @@ -36,6 +36,9 @@ virGDBusGetSystemBus(void); GDBusConnection * virGDBusGetSessionBus(void); =20 +bool +virGDBusHasSessionBus(void); + bool virGDBusHasSystemBus(void); =20 --=20 2.45.3 From nobody Tue Dec 16 03:19:53 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1739437065486794.001748808727; Thu, 13 Feb 2025 00:57:45 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id D71DE1D1E; Thu, 13 Feb 2025 03:57:44 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 03CA61ED3; Thu, 13 Feb 2025 03:56:53 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 3B4FF1978; Thu, 13 Feb 2025 03:56:47 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id B93001791 for ; Thu, 13 Feb 2025 03:56:46 -0500 (EST) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-43-8DaEhx9XNFmp1_6SlYy4Ng-1; Thu, 13 Feb 2025 03:56:44 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 9187A19560AF for ; Thu, 13 Feb 2025 08:56:43 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.3.236]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DA0751800872 for ; Thu, 13 Feb 2025 08:56:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739437006; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/ICz0V8KfKkLwoW1tToX+cIpihSfIRCynr1noldWo+o=; b=TNTTCZjcG9/1QK6M8XLPIaIGaRB7xMyDUOm9iEi2QvZZNh+jSSAG4G5wbfj/HEn5bcgEZZ Pl4T74I5mMN6C2UfiCGbFCNBijpSTI/Oqex8vwzkXbouZZljQoFOjQfovigP6BeJ61snqI w72VEoP/cvkb4vqknbB9eENzci2LUeM= X-MC-Unique: 8DaEhx9XNFmp1_6SlYy4Ng-1 X-Mimecast-MFC-AGG-ID: 8DaEhx9XNFmp1_6SlYy4Ng_1739437003 From: Michal Privoznik To: devel@lists.libvirt.org Subject: [PATCH 2/2] remote_daemon: Silence DBus errors Date: Thu, 13 Feb 2025 09:56:37 +0100 Message-ID: <08910a348f7ee45f9cb04c00f9a7b01c22438c17.1739436981.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: sQkFHjlhcyckM9adps-HR4kRLugwLRufi7gj3nZFTwg_1739437003 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: NNCLZTXT72Y3H37P2LRHLOSGHOWIC4FZ X-Message-ID-Hash: NNCLZTXT72Y3H37P2LRHLOSGHOWIC4FZ X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1739437066600019000 Content-Type: text/plain; charset="utf-8"; x-default="true" When a daemon (like libvirtd, virtqemud, etc.) is started as an unprivileged user (which is exactly how KubeVirt does it), then it tries to register on both session and system DBus-es so that it can shut itself down (e.g. when system is powering off or user logs out). It's worth noting that this is just opportunistic and if no DBus is available then no error is reported. Or at least that's what we thought. Because the way our virGDBusGetSessionBus() and virGDBusGetSystemBus() are written an error is actually reported every time the daemon starts. Use virGDBusHasSessionBus() and virGDBusHasSystemBus() to check if corresponding bus is available. Resolves: https://issues.redhat.com/browse/RHEL-79088 Signed-off-by: Michal Privoznik Reviewed-by: Andrea Bolognani --- src/remote/remote_daemon.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/remote/remote_daemon.c b/src/remote/remote_daemon.c index d44a365000..d90355c0d2 100644 --- a/src/remote/remote_daemon.c +++ b/src/remote/remote_daemon.c @@ -631,23 +631,27 @@ static void daemonRunStateInit(void *opaque) /* Tie the non-privileged daemons to the session/shutdown lifecycle */ if (!virNetDaemonIsPrivileged(dmn)) { =20 - sessionBus =3D virGDBusGetSessionBus(); - if (sessionBus !=3D NULL) - g_dbus_connection_add_filter(sessionBus, - handleSessionMessageFunc, dmn, NU= LL); + if (virGDBusHasSessionBus()) { + sessionBus =3D virGDBusGetSessionBus(); + if (sessionBus !=3D NULL) + g_dbus_connection_add_filter(sessionBus, + handleSessionMessageFunc, dmn= , NULL); + } =20 - systemBus =3D virGDBusGetSystemBus(); - if (systemBus !=3D NULL) - g_dbus_connection_signal_subscribe(systemBus, - "org.freedesktop.login1", - "org.freedesktop.login1.Man= ager", - "PrepareForShutdown", - NULL, - NULL, - G_DBUS_SIGNAL_FLAGS_NONE, - handleSystemMessageFunc, - dmn, - NULL); + if (virGDBusHasSystemBus()) { + systemBus =3D virGDBusGetSystemBus(); + if (systemBus !=3D NULL) + g_dbus_connection_signal_subscribe(systemBus, + "org.freedesktop.login1= ", + "org.freedesktop.login1= .Manager", + "PrepareForShutdown", + NULL, + NULL, + G_DBUS_SIGNAL_FLAGS_NON= E, + handleSystemMessageFunc, + dmn, + NULL); + } } =20 /* Only now accept clients from network */ --=20 2.45.3