diff mbox series

[v2,5/7] migration: Deliver return path file error to migrate state too

Message ID 20230705163502.331007-6-peterx@redhat.com (mailing list archive)
State New, archived
Headers show
Series migration: Better error handling in return path thread | expand

Commit Message

Peter Xu July 5, 2023, 4:35 p.m. UTC
We've already did this for most of the return path thread errors, but not
yet for the IO errors happened on the return path qemufile.  Do that too.

Remember to reset "err" always, because the ownership is not us anymore,
otherwise we're prone to use-after-free later after recovered.

Reviewed-by: Fabiano Rosas <farosas@suse.de>
Signed-off-by: Peter Xu <peterx@redhat.com>
---
 migration/migration.c | 7 +++++++
 1 file changed, 7 insertions(+)
diff mbox series

Patch

diff --git a/migration/migration.c b/migration/migration.c
index 46dbfb07c4..8f60de362f 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -2008,6 +2008,13 @@  out:
 
     res = qemu_file_get_error(rp);
     if (res) {
+        /* We have forwarded any error in "err" already, reuse "error" */
+        assert(err == NULL);
+        /* Try to deliver this file error to migration state */
+        qemu_file_get_error_obj(rp, &err);
+        migrate_set_error(ms, err);
+        err = NULL;
+
         if (res && migration_in_postcopy()) {
             /*
              * Maybe there is something we can do: it looks like a