On 08/27/2014 10:42 AM, Ján Tomko wrote: > On 08/27/2014 03:51 PM, John Ferlan wrote: >> Coverity noted that all callers to libxlDomainEventQueue() could ensure >> the second parameter (event) was true before calling except this case. >> As I look at the code and how events are used - it seems that two events >> would have been sent which more than likely causes some bad stuff for >> the second one. So just remove one call and let the cleanup: handle >> the event. In the future if there's code between getting the event >> and cleanup that needs to send the event, this will have to change in >> order to send the event and set event = NULL (although it seems unlikely >> to happen). >> >> Signed-off-by: John Ferlan <jfer...@redhat.com> >> --- >> src/libxl/libxl_migration.c | 1 - >> 1 file changed, 1 deletion(-) > > >> >> diff --git a/src/libxl/libxl_migration.c b/src/libxl/libxl_migration.c >> index dbb5a8f..eb65536 100644 >> --- a/src/libxl/libxl_migration.c >> +++ b/src/libxl/libxl_migration.c >> @@ -519,7 +519,6 @@ libxlDomainMigrationFinish(virConnectPtr dconn, >> libxlDomainCleanup(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED); >> event = virDomainEventLifecycleNewFromObj(vm, >> VIR_DOMAIN_EVENT_STOPPED, >> VIR_DOMAIN_EVENT_STOPPED_FAILED); > > This (possibly) overwrites the event created earlier. > But I'm not sure if the right solution is to send both events, or clear the > original one. > > Jan >
Hmmm.. right Maybe a: if (event) { libxlDomainEventQueue(driver, event); event = NULL; } before the: dom = virGetDomain(dconn, vm->def->name, vm->def->uuid); will at least cause the RESUME/SUSPEND events to be sent and then if the dom == NULL the STOPPED event would be sent as well I've copied Jim Fehlig for his opinion - since he wrote the code... John >> - libxlDomainEventQueue(driver, event); >> } >> >> cleanup: >> > > -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list