From 4f502feebfcad5ed647a87d5b33228bf63aadbb0 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 10 Apr 2025 10:20:02 +0200 Subject: [PATCH] virinhibitor: Suppress reporting an error when D-Bus is unavailable in virInhibitorAcquire() At the beginning of virInhibitorAcquire() the system D-Bus connection is obtained by calling virGDBusGetSystemBus(). If there's no D-Bus available then an debug message is printed out and function returns early. Problem is, in case of no D-Bus an error message was reported by virGDBusGetSystemBus() and thus logs were polluted which may mislead users. Just check whether D-Bus is available first (by calling virGDBusHasSystemBus()). If it is then virGDBusGetSystemBus() should return a valid connection. Nevertheless, respect previous logic and don't propagate error to the caller, just return 0. Resolves: https://issues.redhat.com/browse/RHEL-79088 Signed-off-by: Michal Privoznik Reviewed-by: Jiri Denemark --- src/util/virinhibitor.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/util/virinhibitor.c b/src/util/virinhibitor.c index a95021de5a..6796938936 100644 --- a/src/util/virinhibitor.c +++ b/src/util/virinhibitor.c @@ -70,11 +70,14 @@ virInhibitorAcquire(const char *what, VIR_DEBUG("what=%s who=%s why=%s mode=%s", NULLSTR(what), NULLSTR(who), NULLSTR(why), NULLSTR(mode)); - if (!(systemBus = virGDBusGetSystemBus())) { + if (!virGDBusHasSystemBus()) { VIR_DEBUG("system dbus not available, skipping system inhibitor"); return 0; } + if (!(systemBus = virGDBusGetSystemBus())) + return 0; + if (virSystemdHasLogind() < 0) { VIR_DEBUG("logind not available, skipping system inhibitor"); return 0; -- 2.47.3