hw/sd.c and hw/onenand.c were wrongly using VMSTATE_BUFFER_UNSAFE for dynamically allocated buffer migration, this was causing memory corruption. Use VMSTATE_BUFFER_POINTER_UNSAFE (wich has an additional VMS_POINTER flag set) instead.
Not sure what to do with vmstate version for his devices, should I bump it? Migration was never working for them anyway. Only tested hw/sd.c, by saving/loading a snapshot of VM while it was playing videofile from SD card. Igor Mitsyanko (3): vmstate.h: introduce VMSTATE_BUFFER_POINTER_UNSAFE macro hw/sd.c: fix migration of dynamically allocated buffer "buf" hw/onenand.c: fix migration of dynamically allocated buffer "otp" hw/onenand.c | 3 ++- hw/sd.c | 2 +- include/migration/vmstate.h | 9 +++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) -- 1.7.5.4