migration/ram: add additional check
authorMaksim Davydov <davydov-max@yandex-team.ru>
Mon, 4 Mar 2024 14:42:03 +0000 (17:42 +0300)
committerPeter Xu <peterx@redhat.com>
Mon, 11 Mar 2024 18:41:40 +0000 (14:41 -0400)
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>
migration/ram.c

index 003c28e1336a5fbe7a3877512b8fc3cf62f1bab3..2cd936d9ce07101cac5af963828156569beb92e4 100644 (file)
@@ -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;