Funny thing. So when initializing LXC driver's capabilities,
firstly the virLXCDriverGetCapabilities() is called. This creates
new capabilities, stores them under driver->caps, ref() them and
return them. However, the return value is ignored. Secondly, the
function is called yet again and since we have driver->caps set,
they are ref()-ed again an returned. So in the end, driver's
capabilities have refcount of three when in fact they should have
refcount of one.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
if (!(lxc_driver->hostdevMgr = virHostdevManagerGetDefault()))
goto cleanup;
- if ((virLXCDriverGetCapabilities(lxc_driver, true)) == NULL)
+ if (!(caps = virLXCDriverGetCapabilities(lxc_driver, true)))
goto cleanup;
if (!(lxc_driver->xmlopt = lxcDomainXMLConfInit()))
if (!(lxc_driver->closeCallbacks = virCloseCallbacksNew()))
goto cleanup;
- if (!(caps = virLXCDriverGetCapabilities(lxc_driver, false)))
- goto cleanup;
-
if (virFileMakePath(cfg->stateDir) < 0) {
virReportSystemError(errno,
_("Failed to mkdir %s"),
goto cleanup;
virNWFilterRegisterCallbackDriver(&lxcCallbackDriver);
+ virObjectUnref(caps);
return 0;
cleanup: