From: Michal Privoznik <mprivozn(a)redhat.com>
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 <mprivozn(a)redhat.com>
---
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.49.0