From 02a4d82e8c19267ad06b08389b5e914ba668450e Mon Sep 17 00:00:00 2001 From: Yuri Pudgorodskiy <yur@virtuozzo.com> Date: Thu, 12 Nov 2015 16:36:20 +0300 Subject: [PATCH 1/3] qga: fix for default env processing for guest-exec envp == NULL must be passed inside gspawn() if it was not passed with the command line. Original code inherits environment from the QGA, which is wrong. Signed-off-by: Yuri Pudgorodskiy <yur@virtuozzo.com> Signed-off-by: Denis V. Lunev <den@openvz.org> CC: Michael Roth <mdroth@linux.vnet.ibm.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com> --- qga/commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qga/commands.c b/qga/commands.c index 0f80ce65a4..7644ca053a 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -398,7 +398,7 @@ GuestExec *qmp_guest_exec(const char *path, arglist.next = has_arg ? arg : NULL; argv = guest_exec_get_args(&arglist, true); - envp = guest_exec_get_args(has_env ? env : NULL, false); + envp = has_env ? guest_exec_get_args(env, false) : NULL; flags = G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD; if (!has_output) { From 0be40839519215988e207b86bc1638de53567588 Mon Sep 17 00:00:00 2001 From: Yuri Pudgorodskiy <yur@virtuozzo.com> Date: Thu, 12 Nov 2015 16:36:21 +0300 Subject: [PATCH 2/3] qga: allow to lookup in PATH from the passed envp for guest-exec This was original behaviour before GLIB gspawn() rework and we rely on this behaviour. Signed-off-by: Yuri Pudgorodskiy <yur@virtuozzo.com> Signed-off-by: Denis V. Lunev <den@openvz.org> CC: Michael Roth <mdroth@linux.vnet.ibm.com> * add version check (2.33.2) for G_SPAWN_SEARCH_PATH_FROM_ENVP Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com> --- qga/commands.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/qga/commands.c b/qga/commands.c index 7644ca053a..bb73e7dfbf 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -401,6 +401,9 @@ GuestExec *qmp_guest_exec(const char *path, envp = has_env ? guest_exec_get_args(env, false) : NULL; flags = G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD; +#if GLIB_CHECK_VERSION(2, 33, 2) + flags |= G_SPAWN_SEARCH_PATH_FROM_ENVP; +#endif if (!has_output) { flags |= G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL; } From ab59e3ecb2c12fafa89f7bedca7d329a078f3870 Mon Sep 17 00:00:00 2001 From: Michael Roth <mdroth@linux.vnet.ibm.com> Date: Sun, 15 Nov 2015 09:46:06 -0600 Subject: [PATCH 3/3] makefile: fix w32 install target for qemu-ga fafcaf1 added a 'qemu-ga' install target on w32, which can be used in place of the existing qemu-ga.exe target to also handle dealing with other components such as DLLs for VSS/fsfreeze and generating an MSI package if appropriate configure options are present. As part of that, qemu-ga$(EXESUF) was removed from $TOOLS in favor of this new qemu-ga target. The install rule however relies on a direct mapping of the $TOOLS entry to the actual resulting binary. In the case of w32, qemu-ga is not identical to qemu-ga$(EXESUF), and the install recipe fails to find the 'qemu-ga' binary. Fix this by essentially remapping 'qemu-ga' back to 'qemu-ga.exe' in the install recipe. This raises the question of whether or not qemu-ga should continue to live in TOOLS as opposed to its own special target, but as a late fix for a regression in 2.5 this commit should be safer, since we rely on qemu-ga's presence in $TOOLS in several places throughout Makefile. Reported-by: Stefan Weil <sw@weilnetz.de> Cc: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com> --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fc1f8bb934..c7fa427e9e 100644 --- a/Makefile +++ b/Makefile @@ -440,7 +440,10 @@ endif install: all $(if $(BUILD_DOCS),install-doc) \ install-datadir install-localstatedir ifneq ($(TOOLS),) - $(call install-prog,$(TOOLS),$(DESTDIR)$(bindir)) + $(call install-prog,$(filter-out qemu-ga,$(TOOLS)),$(DESTDIR)$(bindir)) +ifneq (,$(findstring qemu-ga,$(TOOLS))) + $(call install-prog,qemu-ga$(EXESUF),$(DESTDIR)$(bindir)) +endif endif ifneq ($(CONFIG_MODULES),) $(INSTALL_DIR) "$(DESTDIR)$(qemu_moddir)"