74 lines
2.6 KiB
Diff
74 lines
2.6 KiB
Diff
From c5f90436555d7ab2c1c28bf1cfdb5f5f8ca97816 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
|
|
Date: Thu, 24 Dec 2020 12:53:04 -0500
|
|
Subject: [PATCH 4/5] qga: Use qemu_get_host_name() instead of
|
|
g_get_host_name()
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
RH-Author: Marc-André Lureau <marcandre.lureau@redhat.com>
|
|
Message-id: <20201224125304.62697-4-marcandre.lureau@redhat.com>
|
|
Patchwork-id: 100500
|
|
O-Subject: [RHEL-8.4.0 qemu-kvm PATCH 3/3] qga: Use qemu_get_host_name() instead of g_get_host_name()
|
|
Bugzilla: 1910326
|
|
RH-Acked-by: Daniel P. Berrange <berrange@redhat.com>
|
|
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
|
|
|
|
From: Michal Privoznik <mprivozn@redhat.com>
|
|
|
|
Problem with g_get_host_name() is that on the first call it saves
|
|
the hostname into a global variable and from then on, every
|
|
subsequent call returns the saved hostname. Even if the hostname
|
|
changes. This doesn't play nicely with guest agent, because if
|
|
the hostname is acquired before the guest is set up (e.g. on the
|
|
first boot, or before DHCP) we will report old, invalid hostname.
|
|
|
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1845127
|
|
|
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
|
Cc: qemu-stable@nongnu.org
|
|
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
|
|
|
|
(cherry picked from commit 0d3a8f32b1e0eca279da1b0cc793efc7250c3daf)
|
|
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
---
|
|
qga/commands.c | 17 +++++++++++++----
|
|
1 file changed, 13 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/qga/commands.c b/qga/commands.c
|
|
index 43c323ceada..93bed292d08 100644
|
|
--- a/qga/commands.c
|
|
+++ b/qga/commands.c
|
|
@@ -502,11 +502,20 @@ int ga_parse_whence(GuestFileWhence *whence, Error **errp)
|
|
GuestHostName *qmp_guest_get_host_name(Error **errp)
|
|
{
|
|
GuestHostName *result = NULL;
|
|
- gchar const *hostname = g_get_host_name();
|
|
- if (hostname != NULL) {
|
|
- result = g_new0(GuestHostName, 1);
|
|
- result->host_name = g_strdup(hostname);
|
|
+ g_autofree char *hostname = qemu_get_host_name(errp);
|
|
+
|
|
+ /*
|
|
+ * We want to avoid using g_get_host_name() because that
|
|
+ * caches the result and we wouldn't reflect changes in the
|
|
+ * host name.
|
|
+ */
|
|
+
|
|
+ if (!hostname) {
|
|
+ hostname = g_strdup("localhost");
|
|
}
|
|
+
|
|
+ result = g_new0(GuestHostName, 1);
|
|
+ result->host_name = g_steal_pointer(&hostname);
|
|
return result;
|
|
}
|
|
|
|
--
|
|
2.27.0
|
|
|