[libvirt] [PATCH LIBVIRT] libxl: don't end job for ephemeal domain on start failure

Michal Privoznik mprivozn at redhat.com
Fri Sep 11 09:14:52 UTC 2015


On 10.09.2015 17:45, Ian Campbell wrote:
> commit 4b53d0d4ac9c "libxl: don't remove persistent domain on start
> failure" cleans up the vm object and sets it to NULL if the vm is not
> persistent, however at end job vm (now NULL) is dereferenced via the call to
> libxlDomainObjEndJob. Avoid this by skipping "endjob" and going
> straight to "cleanup" in this case.
> 
> Signed-off-by: Ian Campbell <ian.campbell at citrix.com>
> ---
>  src/libxl/libxl_driver.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index 5f69b49..e2797d5 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -992,6 +992,7 @@ libxlDomainCreateXML(virConnectPtr conn, const char *xml,
>          if (!vm->persistent) {
>              virDomainObjListRemove(driver->domains, vm);
>              vm = NULL;
> +            goto cleanup;
>          }
>          goto endjob;
>      }
> 

While usually having cleanup label in between BeginJob and EndJob is
causing troubles, here it is desired.

ACKed and pushed.

Although, looking at the code, maybe it's time to make it look more like
qemu driver. I mean, wrapping EndJob(); vm= NULL; into one function. Do
proper refcounting, etc.

Michal




More information about the libvir-list mailing list