Damien's patch to fix a pl330 vmstate mixup between VMSTATE_STRUCT_VARRAY_UINT32 and VMSTATE_STRUCT_VARRAY_POINTER_UINT32 led me to think about whether we could catch that particular mixup. It turns out that we can, by adding a type check that the field given to the macro is really an array of the correct type.
This only found one other instance of the same bug, in the stellaris_input device; patch 1 fixes that and then patch 2 is the improved type checking. We should probably also go through and look at the other VMSTATE macros that use a raw 'offsetof' rather than one of the vmstate_offset_foo type-checking macros, and see if we can add type checks there. (Documentation of the macros would be nice too...) I've marked this as for-4.1? because the stellaris bugfix definitely seems worth including in the release but I'm less certain about whether to put in the typecheck -- David/Juan can decide that. thanks -- PMM Based-on: <20190724143553.21557-1-damien.he...@greensocs.com> ("pl330: fix vmstate description" -- otherwise the new typecheck will cause a compile failure due to presence of the bug that patch fixes) Peter Maydell (2): stellaris_input: Fix vmstate description of buttons field vmstate.h: Type check VMSTATE_STRUCT_VARRAY macros include/migration/vmstate.h | 27 +++++++++++++++++++++------ hw/input/stellaris_input.c | 10 ++++++---- 2 files changed, 27 insertions(+), 10 deletions(-) -- 2.20.1