From 07d4e69147b4957e617812206a62a86f03294ad3 Mon Sep 17 00:00:00 2001 From: Halil Pasic Date: Wed, 22 Feb 2017 17:01:17 +0100 Subject: 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 Reviewed-by: Guenther Hutzl Reviewed-by: Dr. David Alan Gilbert Message-Id: <20170222160119.52771-4-pasic@linux.vnet.ibm.com> Signed-off-by: Dr. David Alan Gilbert --- include/migration/vmstate.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'include/migration/vmstate.h') 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; -- cgit v1.2.3