'local_err' forgot to free in colo_process_incoming_thread error path.
Fix that.

Reported-by: Euler Robot <euler.ro...@huawei.com>
Signed-off-by: Pan Nengyuan <pannengy...@huawei.com>
---
Cc: Hailiang Zhang <zhang.zhanghaili...@huawei.com>
Cc: Juan Quintela <quint...@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilb...@redhat.com>
---
- V2: Arrange all 'error_report_err' in 'out' label(suggested by Li Qiang).
---
 migration/colo.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/migration/colo.c b/migration/colo.c
index ea7d1e9d4e..2288188fe2 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -888,7 +888,6 @@ void *colo_process_incoming_thread(void *opaque)
     while (mis->state == MIGRATION_STATUS_COLO) {
         colo_wait_handle_message(mis, fb, bioc, &local_err);
         if (local_err) {
-            error_report_err(local_err);
             break;
         }
 
@@ -924,6 +923,10 @@ out:
         qemu_fclose(fb);
     }
 
+    if (local_err) {
+        error_report_err(local_err);
+    }
+
     /* Hope this not to be too long to loop here */
     qemu_sem_wait(&mis->colo_incoming_sem);
     qemu_sem_destroy(&mis->colo_incoming_sem);
-- 
2.18.2


Reply via email to