summaryrefslogtreecommitdiffstats
path: root/include/migration
diff options
context:
space:
mode:
authorHalil Pasic2017-02-22 17:01:17 +0100
committerDr. David Alan Gilbert2017-02-28 12:29:00 +0100
commit07d4e69147b4957e617812206a62a86f03294ad3 (patch)
tree376208699863924fe99aeb027c4e3a4c22f49d89 /include/migration
parentmigration/vmstate: split up vmstate_base_addr (diff)
downloadqemu-07d4e69147b4957e617812206a62a86f03294ad3.tar.gz
qemu-07d4e69147b4957e617812206a62a86f03294ad3.tar.xz
qemu-07d4e69147b4957e617812206a62a86f03294ad3.zip
migration/vmstate: fix array of ptr with nullptrs
Make VMS_ARRAY_OF_POINTER cope with null pointers. Previously the reward for trying to migrate an array with some null pointers in it was an illegal memory access, that is a swift and painless death of the process. Let's make vmstate cope with this scenario. The general approach is, when we encounter a null pointer (element), instead of following the pointer to save/load the data behind it, we save/load a placeholder. This way we can detect if we expected a null pointer at the load side but not null data was saved instead. Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com> Reviewed-by: Guenther Hutzl <hutzl@linux.vnet.ibm.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Message-Id: <20170222160119.52771-4-pasic@linux.vnet.ibm.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Diffstat (limited to 'include/migration')
-rw-r--r--include/migration/vmstate.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
index 63e7b02e05..f2dbf8410a 100644
--- a/include/migration/vmstate.h
+++ b/include/migration/vmstate.h
@@ -253,6 +253,10 @@ extern const VMStateInfo vmstate_info_uint16;
extern const VMStateInfo vmstate_info_uint32;
extern const VMStateInfo vmstate_info_uint64;
+/** Put this in the stream when migrating a null pointer.*/
+#define VMS_NULLPTR_MARKER (0x30U) /* '0' */
+extern const VMStateInfo vmstate_info_nullptr;
+
extern const VMStateInfo vmstate_info_float64;
extern const VMStateInfo vmstate_info_cpudouble;