diff options
author | Maksim Davydov <davydov-max@yandex-team.ru> | 2024-03-04 17:42:03 +0300 |
---|---|---|
committer | Peter Xu <peterx@redhat.com> | 2024-03-11 14:41:40 -0400 |
commit | 12ab1e4fe84aafac37e006673f0d01f716a9a058 (patch) | |
tree | 85dbf6d22853c1c84011a6ee69306474bedab965 | |
parent | ff64e0ba817d79968bffa88d205397abf05cc6e8 (diff) | |
download | qemu-12ab1e4fe84aafac37e006673f0d01f716a9a058.zip qemu-12ab1e4fe84aafac37e006673f0d01f716a9a058.tar.gz qemu-12ab1e4fe84aafac37e006673f0d01f716a9a058.tar.bz2 |
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.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/migration/ram.c b/migration/ram.c index 003c28e..2cd936d 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; |