Migraiton Pull request
Hi This pull requests include: - use-after-free in test-vmstate (eric) - fix exec migration in windows (berberian) Please apply. -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEGJn/jt6/WMzuA0uC9IfvGFhy1yMFAmQAynUACgkQ9IfvGFhy 1yMAKhAAyLAVSDvCh8uRvAZ4sHzZTmCuvMpGol8wromFta9Ub0vLqcK8F3neYERb xsRmYxcfaGR0dcf4j8CNAdUjO3NJjiSlWFqFYizIWZNQ2Hotgfkizxifk7l1eRO5 L4TvOcdS0oRAgwLvcE9SDjtRMYwCBey/opgQCAaWWVk/NLDEYKNOuPNSdrpPhMPL LBBPNj1ATmKYPGxsdm3U8VwFu9VuevmQ9AxEhW4Euf9Ex0Ie+hxGjHZmzrJrbYUL 3p2cyu/ShU3MxsKowgmFnDkL3zyihYPAKhb1YJ+csRLFJX/zKVJcH7ZVzJOSR3GQ ZoksI1RciwBfbl1IVD+TgrZrZnFd5ltto3zxSrjLFFnB4lhtg5bUDwMG8/o5qx3d YaJOaeTJbmqd+SRPxrqbLWWGpsXUJc1rEVcYh2rclyOxvwda1xJrl7/2N2ZeS6VD GO7FhcaprpxvLF+WYmhuCIS3RbOC35/Hx11bgQL8da8lxPQsOfsPTkRpzeWa4exX ET+fqvlQp8ApHDVF/VA8vD31brSv3moL6GmVnZeT/Fi5xa7Ntb3Mnn5DkDoXgSKo DQjie+ZTRJ/E4VbY53FAeUh4M3OPf5NaZyzgx3K68XMZJ6THiLmwqDa/vO53Q0QP kMNVYAA9FbBFIozDpa2l+fCNxaawKqVBK4yYoEBZcBLYjb+7540= =fku0 -----END PGP SIGNATURE----- Merge tag 'migration-20230302-pull-request' of https://gitlab.com/juan.quintela/qemu into staging Migraiton Pull request Hi This pull requests include: - use-after-free in test-vmstate (eric) - fix exec migration in windows (berberian) Please apply. # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEEGJn/jt6/WMzuA0uC9IfvGFhy1yMFAmQAynUACgkQ9IfvGFhy # 1yMAKhAAyLAVSDvCh8uRvAZ4sHzZTmCuvMpGol8wromFta9Ub0vLqcK8F3neYERb # xsRmYxcfaGR0dcf4j8CNAdUjO3NJjiSlWFqFYizIWZNQ2Hotgfkizxifk7l1eRO5 # L4TvOcdS0oRAgwLvcE9SDjtRMYwCBey/opgQCAaWWVk/NLDEYKNOuPNSdrpPhMPL # LBBPNj1ATmKYPGxsdm3U8VwFu9VuevmQ9AxEhW4Euf9Ex0Ie+hxGjHZmzrJrbYUL # 3p2cyu/ShU3MxsKowgmFnDkL3zyihYPAKhb1YJ+csRLFJX/zKVJcH7ZVzJOSR3GQ # ZoksI1RciwBfbl1IVD+TgrZrZnFd5ltto3zxSrjLFFnB4lhtg5bUDwMG8/o5qx3d # YaJOaeTJbmqd+SRPxrqbLWWGpsXUJc1rEVcYh2rclyOxvwda1xJrl7/2N2ZeS6VD # GO7FhcaprpxvLF+WYmhuCIS3RbOC35/Hx11bgQL8da8lxPQsOfsPTkRpzeWa4exX # ET+fqvlQp8ApHDVF/VA8vD31brSv3moL6GmVnZeT/Fi5xa7Ntb3Mnn5DkDoXgSKo # DQjie+ZTRJ/E4VbY53FAeUh4M3OPf5NaZyzgx3K68XMZJ6THiLmwqDa/vO53Q0QP # kMNVYAA9FbBFIozDpa2l+fCNxaawKqVBK4yYoEBZcBLYjb+7540= # =fku0 # -----END PGP SIGNATURE----- # gpg: Signature made Thu 02 Mar 2023 16:10:29 GMT # gpg: using RSA key 1899FF8EDEBF58CCEE034B82F487EF185872D723 # gpg: Good signature from "Juan Quintela <quintela@redhat.com>" [full] # gpg: aka "Juan Quintela <quintela@trasno.org>" [full] # Primary key fingerprint: 1899 FF8E DEBF 58CC EE03 4B82 F487 EF18 5872 D723 * tag 'migration-20230302-pull-request' of https://gitlab.com/juan.quintela/qemu: Fix exec migration on Windows (w32+w64). test-vmstate: fix bad GTree usage, use-after-free Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
43b79f3b86
@ -23,12 +23,31 @@
|
|||||||
#include "migration.h"
|
#include "migration.h"
|
||||||
#include "io/channel-command.h"
|
#include "io/channel-command.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
#include "qemu/cutils.h"
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
const char *exec_get_cmd_path(void);
|
||||||
|
const char *exec_get_cmd_path(void)
|
||||||
|
{
|
||||||
|
g_autofree char *detected_path = g_new(char, MAX_PATH);
|
||||||
|
if (GetSystemDirectoryA(detected_path, MAX_PATH) == 0) {
|
||||||
|
warn_report("Could not detect cmd.exe path, using default.");
|
||||||
|
return "C:\\Windows\\System32\\cmd.exe";
|
||||||
|
}
|
||||||
|
pstrcat(detected_path, MAX_PATH, "\\cmd.exe");
|
||||||
|
return g_steal_pointer(&detected_path);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void exec_start_outgoing_migration(MigrationState *s, const char *command, Error **errp)
|
void exec_start_outgoing_migration(MigrationState *s, const char *command, Error **errp)
|
||||||
{
|
{
|
||||||
QIOChannel *ioc;
|
QIOChannel *ioc;
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
const char *argv[] = { exec_get_cmd_path(), "/c", command, NULL };
|
||||||
|
#else
|
||||||
const char *argv[] = { "/bin/sh", "-c", command, NULL };
|
const char *argv[] = { "/bin/sh", "-c", command, NULL };
|
||||||
|
#endif
|
||||||
|
|
||||||
trace_migration_exec_outgoing(command);
|
trace_migration_exec_outgoing(command);
|
||||||
ioc = QIO_CHANNEL(qio_channel_command_new_spawn(argv,
|
ioc = QIO_CHANNEL(qio_channel_command_new_spawn(argv,
|
||||||
@ -55,7 +74,12 @@ static gboolean exec_accept_incoming_migration(QIOChannel *ioc,
|
|||||||
void exec_start_incoming_migration(const char *command, Error **errp)
|
void exec_start_incoming_migration(const char *command, Error **errp)
|
||||||
{
|
{
|
||||||
QIOChannel *ioc;
|
QIOChannel *ioc;
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
const char *argv[] = { exec_get_cmd_path(), "/c", command, NULL };
|
||||||
|
#else
|
||||||
const char *argv[] = { "/bin/sh", "-c", command, NULL };
|
const char *argv[] = { "/bin/sh", "-c", command, NULL };
|
||||||
|
#endif
|
||||||
|
|
||||||
trace_migration_exec_incoming(command);
|
trace_migration_exec_incoming(command);
|
||||||
ioc = QIO_CHANNEL(qio_channel_command_new_spawn(argv,
|
ioc = QIO_CHANNEL(qio_channel_command_new_spawn(argv,
|
||||||
|
@ -1073,7 +1073,6 @@ static gboolean diff_tree(gpointer key, gpointer value, gpointer data)
|
|||||||
struct match_node_data d = {tp->tree2, key, value};
|
struct match_node_data d = {tp->tree2, key, value};
|
||||||
|
|
||||||
g_tree_foreach(tp->tree2, tp->match_node, &d);
|
g_tree_foreach(tp->tree2, tp->match_node, &d);
|
||||||
g_tree_remove(tp->tree1, key);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1082,9 +1081,9 @@ static void compare_trees(GTree *tree1, GTree *tree2,
|
|||||||
{
|
{
|
||||||
struct tree_cmp_data tp = {tree1, tree2, function};
|
struct tree_cmp_data tp = {tree1, tree2, function};
|
||||||
|
|
||||||
|
assert(g_tree_nnodes(tree1) == g_tree_nnodes(tree2));
|
||||||
g_tree_foreach(tree1, diff_tree, &tp);
|
g_tree_foreach(tree1, diff_tree, &tp);
|
||||||
assert(g_tree_nnodes(tree1) == 0);
|
g_tree_destroy(g_tree_ref(tree1));
|
||||||
assert(g_tree_nnodes(tree2) == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void diff_domain(TestGTreeDomain *d1, TestGTreeDomain *d2)
|
static void diff_domain(TestGTreeDomain *d1, TestGTreeDomain *d2)
|
||||||
|
Loading…
Reference in New Issue
Block a user