提交 e703039c 编写于 作者: M Michal Privoznik

lxcStateInitialize: Don't leak driver's caps

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: NMichal Privoznik <mprivozn@redhat.com>
上级 e8a99292
......@@ -1660,7 +1660,7 @@ static int lxcStateInitialize(bool privileged,
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()))
......@@ -1669,9 +1669,6 @@ static int lxcStateInitialize(bool privileged,
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"),
......@@ -1700,6 +1697,7 @@ static int lxcStateInitialize(bool privileged,
goto cleanup;
virNWFilterRegisterCallbackDriver(&lxcCallbackDriver);
virObjectUnref(caps);
return 0;
cleanup:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册