Message ID | 20240304144203.158477-1-davydov-max@yandex-team.ru (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | migration/ram: add additional check | expand |
On Mon, Mar 04, 2024 at 05:42:03PM +0300, Maksim Davydov wrote: > 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> > --- > migration/ram.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/migration/ram.c b/migration/ram.c > index 45a00b45ed..95d8b19c3b 100644 > --- a/migration/ram.c > +++ b/migration/ram.c > @@ -3902,6 +3902,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; > > -- > 2.34.1 > > Queued, thanks.
diff --git a/migration/ram.c b/migration/ram.c index 45a00b45ed..95d8b19c3b 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3902,6 +3902,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;
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> --- migration/ram.c | 6 ++++++ 1 file changed, 6 insertions(+)