summaryrefslogtreecommitdiff
path: root/migration.c
diff options
context:
space:
mode:
authorGonglei (Arei) <arei.gonglei@huawei.com>2014-01-30 20:08:35 +0200
committerJuan Quintela <quintela@redhat.com>2014-02-04 16:49:24 +0100
commit905f26f2221e139ac0e7317ddac158c50f5cf876 (patch)
tree420e6d998f90b84df75f6366d16fb6b6871d4761 /migration.c
parentc91e681a558fc21073ffc491b5a022d5f340fa0b (diff)
downloadqemu-905f26f2221e139ac0e7317ddac158c50f5cf876.tar.gz
qemu-905f26f2221e139ac0e7317ddac158c50f5cf876.tar.bz2
qemu-905f26f2221e139ac0e7317ddac158c50f5cf876.zip
migration:fix free XBZRLE decoded_buf wrong
When qemu do live migration with xbzrle, qemu malloc decoded_buf at destination end but free it at source end. It will crash qemu by double free error in some scenarios. Splitting the XBZRLE structure for clear logic distinguishing src/dst side. Signed-off-by: ChenLiang <chenliang88@huawei.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Orit Wasserman <owasserm@redhat.com> Signed-off-by: GongLei <arei.gonglei@huawei.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
Diffstat (limited to 'migration.c')
-rw-r--r--migration.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/migration.c b/migration.c
index 84587e9e5a..46a7305395 100644
--- a/migration.c
+++ b/migration.c
@@ -105,6 +105,7 @@ static void process_incoming_migration_co(void *opaque)
ret = qemu_loadvm_state(f);
qemu_fclose(f);
+ free_xbzrle_decoded_buf();
if (ret < 0) {
fprintf(stderr, "load of migration failed\n");
exit(EXIT_FAILURE);