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.
--
Peter Xu