On Wed, Nov 21, 2012 at 03:59:25PM +1100, David Gibson wrote: > madvise(DONTNEED) will throw away the contents of the whole page at the > given address, even if the given length is less than the page size. One > can argue about whether that's the correct behaviour, but that's what it's > done for a long time in Linux at least. > > That means that the madvise() in ram_load(), on a setup where > TARGET_PAGE_SIZE is smaller than the host page size, can throw away data > in guest pages adjacent to the one it's actually processing right now, > leading to guest memory corruption on an incoming migration. > > This patch therefore, disables the madvise() if the host page size is > larger than TARGET_PAGE_SIZE. This means we don't get the benefits of that > madvise() in this case, but a more complete fix is more difficult to > accomplish. This at least fixes the guest memory corruption. > > Signed-off-by: David Gibson <[email protected]>
Sorry, forgot to add: Reported-by: Alexey Kardashevskiy <[email protected]> -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
