mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemuDomainObjPrivateAlloc: Fix unlikely memory leak
Additional cleanup paths add the possibility of not freeing earlier stuff. Add an AUTOPTR handler for qemuDomainObjPrivate and use it in qemuDomainObjPrivateAlloc Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
This commit is contained in:
parent
e908a8e0e2
commit
3a95187289
@ -1891,22 +1891,22 @@ qemuDomainObjPrivateFree(void *data)
|
|||||||
g_free(priv);
|
g_free(priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuDomainObjPrivate, qemuDomainObjPrivateFree);
|
||||||
|
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
qemuDomainObjPrivateAlloc(void *opaque)
|
qemuDomainObjPrivateAlloc(void *opaque)
|
||||||
{
|
{
|
||||||
qemuDomainObjPrivate *priv;
|
g_autoptr(qemuDomainObjPrivate) priv = g_new0(qemuDomainObjPrivate, 1);
|
||||||
|
|
||||||
priv = g_new0(qemuDomainObjPrivate, 1);
|
|
||||||
|
|
||||||
if (qemuDomainObjInitJob(&priv->job, &qemuPrivateJobCallbacks) < 0) {
|
if (qemuDomainObjInitJob(&priv->job, &qemuPrivateJobCallbacks) < 0) {
|
||||||
virReportSystemError(errno, "%s",
|
virReportSystemError(errno, "%s",
|
||||||
_("Unable to init qemu driver mutexes"));
|
_("Unable to init qemu driver mutexes"));
|
||||||
goto error;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(priv->devs = virChrdevAlloc()))
|
if (!(priv->devs = virChrdevAlloc()))
|
||||||
goto error;
|
return NULL;
|
||||||
|
|
||||||
priv->blockjobs = virHashNew(virObjectFreeHashData);
|
priv->blockjobs = virHashNew(virObjectFreeHashData);
|
||||||
|
|
||||||
@ -1915,11 +1915,7 @@ qemuDomainObjPrivateAlloc(void *opaque)
|
|||||||
priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX;
|
priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX;
|
||||||
priv->driver = opaque;
|
priv->driver = opaque;
|
||||||
|
|
||||||
return priv;
|
return g_steal_pointer(&priv);
|
||||||
|
|
||||||
error:
|
|
||||||
VIR_FREE(priv);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user