[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



On 09/11/2015 03:14 AM, Michal Privoznik wrote:
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@xxxxxxxxxx>
---
  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.

I have a patch to do just that

https://www.redhat.com/archives/libvir-list/2015-June/msg00711.html

Sadly, I haven't found time to address Martin's latest comments, do another round of testing, and submit a V2.

Regards,
Jim


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.