summaryrefslogtreecommitdiffstats
path: root/include/migration
diff options
context:
space:
mode:
authorAshijeet Acharya2017-02-13 19:04:48 +0100
committerDr. David Alan Gilbert2017-02-28 12:30:22 +0100
commit7562f90707aa1f409ba2312569cb791241fca045 (patch)
treed5981b7fbec7402b66053072587cd48793cc5ff0 /include/migration
parentvmstate-static-checker: update white list with spapr_pci (diff)
downloadqemu-7562f90707aa1f409ba2312569cb791241fca045.tar.gz
qemu-7562f90707aa1f409ba2312569cb791241fca045.tar.xz
qemu-7562f90707aa1f409ba2312569cb791241fca045.zip
migrate: Introduce a 'dc->vmsd' check to avoid segfault for --only-migratable
Commit a3a3d8c7 introduced a segfault bug while checking for 'dc->vmsd->unmigratable' which caused QEMU to crash when trying to add devices which do no set their 'dc->vmsd' yet while initialization. Place a 'dc->vmsd' check prior to it so that we do not segfault for such devices. NOTE: This doesn't compromise the functioning of --only-migratable option as all the unmigratable devices do set their 'dc->vmsd'. Introduce a new function check_migratable() and move the only_migratable check inside it, also use stubs to avoid user-mode qemu build failures. Signed-off-by: Ashijeet Acharya <ashijeetacharya@gmail.com> Message-Id: <1487009088-23891-1-git-send-email-ashijeetacharya@gmail.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Diffstat (limited to 'include/migration')
-rw-r--r--include/migration/migration.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/migration/migration.h b/include/migration/migration.h
index 1735d66512..34a383ef4c 100644
--- a/include/migration/migration.h
+++ b/include/migration/migration.h
@@ -22,6 +22,7 @@
#include "qapi-types.h"
#include "exec/cpu-common.h"
#include "qemu/coroutine_int.h"
+#include "qom/object.h"
#define QEMU_VM_FILE_MAGIC 0x5145564d
#define QEMU_VM_FILE_VERSION_COMPAT 0x00000002
@@ -313,6 +314,8 @@ int migrate_add_blocker(Error *reason, Error **errp);
*/
void migrate_del_blocker(Error *reason);
+int check_migratable(Object *obj, Error **err);
+
bool migrate_release_ram(void);
bool migrate_postcopy_ram(void);
bool migrate_zero_blocks(void);