libxl: fix cleanup bug in initiate_domain_create()
authorPaweł Marczewski <pawel@invisiblethingslab.com>
Fri, 13 Mar 2020 11:25:10 +0000 (11:25 +0000)
committerIan Jackson <ian.jackson@eu.citrix.com>
Fri, 13 Mar 2020 11:33:40 +0000 (11:33 +0000)
In case of errors, we immediately call domcreate_complete()
which cleans up the console_xswait object. Make sure it is initialized
before we start cleanup.

Signed-off-by: Paweł Marczewski <pawel@invisiblethingslab.com>
Reviewed-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/libxl/libxl_create.c

index 7891fae4263a25f9d378baf8aac23411604b47b2..772344c64883e05660bc5c71213148a7415bd9e8 100644 (file)
@@ -1168,6 +1168,8 @@ static void initiate_domain_create(libxl__egc *egc,
     libxl_domain_config *const d_config = dcs->guest_config;
     const int restore_fd = dcs->restore_fd;
 
+    libxl__xswait_init(&dcs->console_xswait);
+
     domid = dcs->domid;
     libxl__domain_build_state_init(&dcs->build_state);
 
@@ -1219,8 +1221,6 @@ static void initiate_domain_create(libxl__egc *egc,
     if (ret)
         goto error_out;
 
-    libxl__xswait_init(&dcs->console_xswait);
-
     if (restore_fd >= 0 || dcs->soft_reset) {
         LOGD(DEBUG, domid, "restoring, not running bootloader");
         domcreate_bootloader_done(egc, &dcs->bl, 0);