Re: [PATCH] migration/ram: add additional check

2024-03-04 Thread Peter Xu
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 
> ---
>  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




[PATCH] migration/ram: add additional check

2024-03-04 Thread Maksim Davydov
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 
---
 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