]> xenbits.xensource.com Git - people/royger/xen.git/commitdiff
libxl: Fix libxl_retrieve_domain_configuration error path
authorAnthony PERARD <anthony.perard@gmail.com>
Tue, 12 Nov 2019 14:19:43 +0000 (14:19 +0000)
committerWei Liu <wl@xen.org>
Tue, 12 Nov 2019 15:31:41 +0000 (15:31 +0000)
If an error were to happen before the last step, for example the
domain_configuration is missing, the error wouldn't be checked by the
_end callback.

Fix that, also initialise `lock' to NULL because the exit path checks
it.

The issue shows up when there's a stubdom, and running `xl list -l`
aborts. Instead, with this patch, `xl list -l` will not list stubdom,
probably like before.

Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Fixes: 61563419257ed40278938db2cce7d697aed44f5d
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Acked-by: Wei Liu <wl@xen.org>
Release-acked-by: Juergen Gross <jgross@suse.com>
tools/libxl/libxl_domain.c

index 9d0eb5aed11d75df5827320c6776fc5f578cb250..33f9d9eaa481fb095bf0bd65eb10bf5d4e9a41ca 100644 (file)
@@ -1998,12 +1998,14 @@ static void retrieve_domain_configuration_end(libxl__egc *egc,
     retrieve_domain_configuration_state *rdcs, int rc)
 {
     STATE_AO_GC(rdcs->qmp.ao);
-    libxl__domain_userdata_lock *lock;
+    libxl__domain_userdata_lock *lock = NULL;
 
     /* Convenience aliases */
     libxl_domain_config *const d_config = rdcs->d_config;
     libxl_domid domid = rdcs->qmp.domid;
 
+    if (rc) goto out;
+
     lock = libxl__lock_domain_userdata(gc, domid);
     if (!lock) {
         rc = ERROR_LOCK_FAIL;