[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 21/32] migration/colo: Fix qmp_xen_colo_do_checkpoint() error hand
From: |
Markus Armbruster |
Subject: |
[PULL 21/32] migration/colo: Fix qmp_xen_colo_do_checkpoint() error handling |
Date: |
Wed, 29 Apr 2020 09:20:37 +0200 |
The Error ** argument must be NULL, &error_abort, &error_fatal, or a
pointer to a variable containing NULL. Passing an argument of the
latter kind twice without clearing it in between is wrong: if the
first call sets an error, it no longer points to NULL for the second
call.
qmp_xen_colo_do_checkpoint() passes @errp first to
replication_do_checkpoint_all(), and then to
colo_notify_filters_event(). If both fail, this will trip the
assertion in error_setv().
Similar code in secondary_vm_do_failover() calls
colo_notify_filters_event() only after replication_do_checkpoint_all()
succeeded. Do the same here.
Fixes: 0e8818f023616677416840d6ddc880db8de3c967
Cc: Zhang Chen <address@hidden>
Cc: zhanghailiang <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: zhanghailiang <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Zhang Chen <address@hidden>
Message-Id: <address@hidden>
---
migration/colo.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/migration/colo.c b/migration/colo.c
index a54ac84f41..1b3493729b 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -263,7 +263,13 @@ ReplicationStatus *qmp_query_xen_replication_status(Error
**errp)
void qmp_xen_colo_do_checkpoint(Error **errp)
{
- replication_do_checkpoint_all(errp);
+ Error *err = NULL;
+
+ replication_do_checkpoint_all(&err);
+ if (err) {
+ error_propagate(errp, err);
+ return;
+ }
/* Notify all filters of all NIC to do checkpoint */
colo_notify_filters_event(COLO_EVENT_CHECKPOINT, errp);
}
--
2.21.1
- [PULL 16/32] fdc: Fix fallback=auto error handling, (continued)
- [PULL 16/32] fdc: Fix fallback=auto error handling, Markus Armbruster, 2020/04/29
- [PULL 28/32] smbus: Fix spd_data_generate() for number of banks > 2, Markus Armbruster, 2020/04/29
- [PULL 11/32] cryptodev: Fix cryptodev_builtin_cleanup() error API violation, Markus Armbruster, 2020/04/29
- [PULL 01/32] various: Remove suspicious '\' character outside of #define in C code, Markus Armbruster, 2020/04/29
- [PULL 26/32] smbus: Fix spd_data_generate() error API violation, Markus Armbruster, 2020/04/29
- [PULL 17/32] bochs-display: Fix vgamem=SIZE error handling, Markus Armbruster, 2020/04/29
- [PULL 23/32] qga: Fix qmp_guest_get_memory_blocks() error handling, Markus Armbruster, 2020/04/29
- [PULL 30/32] fuzz: Simplify how we compute available machines and types, Markus Armbruster, 2020/04/29
- [PULL 15/32] arm/virt: Fix virt_machine_device_plug_cb() error API violation, Markus Armbruster, 2020/04/29
- [PULL 29/32] Makefile: Drop unused, broken target recurse-fuzz, Markus Armbruster, 2020/04/29
- [PULL 21/32] migration/colo: Fix qmp_xen_colo_do_checkpoint() error handling,
Markus Armbruster <=
- [PULL 13/32] cpus: Fix configure_icount() error API violation, Markus Armbruster, 2020/04/29
- [PULL 12/32] block/file-posix: Fix check_cache_dropped() error handling, Markus Armbruster, 2020/04/29
- [PULL 14/32] cpus: Proper range-checking for -icount shift=N, Markus Armbruster, 2020/04/29
- [PULL 18/32] virtio-net: Fix duplex=... and speed=... error handling, Markus Armbruster, 2020/04/29
- [PULL 22/32] tests/test-logging: Fix test for -dfilter 0..0xffffffffffffffff, Markus Armbruster, 2020/04/29
- Re: [PULL 00/32] Miscellaneous patches for 2020-04-29, no-reply, 2020/04/29
- Re: [PULL 00/32] Miscellaneous patches for 2020-04-29, Peter Maydell, 2020/04/29