Fix xbzrle vs last_sent_block update
commit3fd3c4b37c116cce7e9810fcc15a0a2cf15115a5
authorDr. David Alan Gilbert <dgilbert@redhat.com>
Thu, 10 Dec 2015 16:31:46 +0000 (10 16:31 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 11 Dec 2015 12:51:27 +0000 (11 12:51 +0000)
tree388fdaa41ba161791897718ed5c8a5688f682c07
parentb969526adf3d77c4a70d7aae41a2f6dccbd024a7
Fix xbzrle vs last_sent_block update

My fix (84e7b80a) replaced the last_sent_block update that I'd
removed earlier; however it was too aggressive in the xbzrle case.

save_xbzrle_page might return '0' to mean that the page didn't
need sending since it was the same as the last sent version;
in this case we can't update 'last_sent_block' since we didn't
actually send it.

Symptom: 'Illegal RAM offset 1018000' as we try and send a page
        to the wrong RAMBlock;  potentially that could be a data
        corruption if you were really unlucky.

Fixes: 84e7b80a05c0c44b90533c6cd2f1db5c932ccf77

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Message-id: 1449765106-6528-1-git-send-email-dgilbert@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
migration/ram.c