aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaksim Davydov <davydov-max@yandex-team.ru>2024-03-04 17:42:03 +0300
committerPeter Xu <peterx@redhat.com>2024-03-11 14:41:40 -0400
commit12ab1e4fe84aafac37e006673f0d01f716a9a058 (patch)
tree85dbf6d22853c1c84011a6ee69306474bedab965
parentff64e0ba817d79968bffa88d205397abf05cc6e8 (diff)
migration/ram: add additional check
If a migration stream is broken, the address and flag reading can return zero. Thus, an irrelevant flag error will be returned instead of EIO. It can be fixed by additional check after the reading. Signed-off-by: Maksim Davydov <davydov-max@yandex-team.ru> Link: https://lore.kernel.org/r/20240304144203.158477-1-davydov-max@yandex-team.ru Signed-off-by: Peter Xu <peterx@redhat.com>
-rw-r--r--migration/ram.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/migration/ram.c b/migration/ram.c
index 003c28e133..2cd936d9ce 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -4214,6 +4214,12 @@ static int ram_load_precopy(QEMUFile *f)
i++;
addr = qemu_get_be64(f);
+ ret = qemu_file_get_error(f);
+ if (ret) {
+ error_report("Getting RAM address failed");
+ break;
+ }
+
flags = addr & ~TARGET_PAGE_MASK;
addr &= TARGET_PAGE_MASK;