mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
qemu: fix memory leak about virDomainEventTunableNew
For prevent memory leak and easier to use, So change virDomainEventTunableNew to get virTypedParameterPtr *params and set it = NULL. Signed-off-by: lu zhipeng <luzhipeng@cestc.cn> Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
fa2a7f888c
commit
d95c79fbd0
@ -1495,7 +1495,7 @@ static virObjectEvent *
|
|||||||
virDomainEventTunableNew(int id,
|
virDomainEventTunableNew(int id,
|
||||||
const char *name,
|
const char *name,
|
||||||
unsigned char *uuid,
|
unsigned char *uuid,
|
||||||
virTypedParameterPtr params,
|
virTypedParameterPtr *params,
|
||||||
int nparams)
|
int nparams)
|
||||||
{
|
{
|
||||||
virDomainEventTunable *ev;
|
virDomainEventTunable *ev;
|
||||||
@ -1508,19 +1508,19 @@ virDomainEventTunableNew(int id,
|
|||||||
id, name, uuid)))
|
id, name, uuid)))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
ev->params = params;
|
ev->params = *params;
|
||||||
ev->nparams = nparams;
|
ev->nparams = nparams;
|
||||||
|
*params = NULL;
|
||||||
return (virObjectEvent *)ev;
|
return (virObjectEvent *)ev;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
virTypedParamsFree(params, nparams);
|
virTypedParamsFree(*params, nparams);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
virObjectEvent *
|
virObjectEvent *
|
||||||
virDomainEventTunableNewFromObj(virDomainObj *obj,
|
virDomainEventTunableNewFromObj(virDomainObj *obj,
|
||||||
virTypedParameterPtr params,
|
virTypedParameterPtr *params,
|
||||||
int nparams)
|
int nparams)
|
||||||
{
|
{
|
||||||
return virDomainEventTunableNew(obj->def->id,
|
return virDomainEventTunableNew(obj->def->id,
|
||||||
@ -1532,7 +1532,7 @@ virDomainEventTunableNewFromObj(virDomainObj *obj,
|
|||||||
|
|
||||||
virObjectEvent *
|
virObjectEvent *
|
||||||
virDomainEventTunableNewFromDom(virDomainPtr dom,
|
virDomainEventTunableNewFromDom(virDomainPtr dom,
|
||||||
virTypedParameterPtr params,
|
virTypedParameterPtr *params,
|
||||||
int nparams)
|
int nparams)
|
||||||
{
|
{
|
||||||
return virDomainEventTunableNew(dom->id,
|
return virDomainEventTunableNew(dom->id,
|
||||||
|
@ -195,11 +195,11 @@ virDomainEventDeviceRemovalFailedNewFromDom(virDomainPtr dom,
|
|||||||
|
|
||||||
virObjectEvent *
|
virObjectEvent *
|
||||||
virDomainEventTunableNewFromObj(virDomainObj *obj,
|
virDomainEventTunableNewFromObj(virDomainObj *obj,
|
||||||
virTypedParameterPtr params,
|
virTypedParameterPtr *params,
|
||||||
int nparams);
|
int nparams);
|
||||||
virObjectEvent *
|
virObjectEvent *
|
||||||
virDomainEventTunableNewFromDom(virDomainPtr dom,
|
virDomainEventTunableNewFromDom(virDomainPtr dom,
|
||||||
virTypedParameterPtr params,
|
virTypedParameterPtr *params,
|
||||||
int nparams);
|
int nparams);
|
||||||
|
|
||||||
virObjectEvent *
|
virObjectEvent *
|
||||||
|
@ -4472,12 +4472,12 @@ qemuDomainPinVcpuLive(virDomainObj *vm,
|
|||||||
&eventMaxparams, paramField, str) < 0)
|
&eventMaxparams, paramField, str) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
event = virDomainEventTunableNewFromObj(vm, eventParams, eventNparams);
|
event = virDomainEventTunableNewFromObj(vm, &eventParams, eventNparams);
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virObjectEventStateQueue(driver->domainEventState, event);
|
virObjectEventStateQueue(driver->domainEventState, event);
|
||||||
|
virTypedParamsFree(eventParams, eventNparams);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4681,7 +4681,7 @@ qemuDomainPinEmulator(virDomainPtr dom,
|
|||||||
str) < 0)
|
str) < 0)
|
||||||
goto endjob;
|
goto endjob;
|
||||||
|
|
||||||
event = virDomainEventTunableNewFromDom(dom, eventParams, eventNparams);
|
event = virDomainEventTunableNewFromDom(dom, &eventParams, eventNparams);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (persistentDef) {
|
if (persistentDef) {
|
||||||
@ -4700,6 +4700,7 @@ qemuDomainPinEmulator(virDomainPtr dom,
|
|||||||
cleanup:
|
cleanup:
|
||||||
virObjectEventStateQueue(driver->domainEventState, event);
|
virObjectEventStateQueue(driver->domainEventState, event);
|
||||||
virDomainObjEndAPI(&vm);
|
virDomainObjEndAPI(&vm);
|
||||||
|
virTypedParamsFree(eventParams, eventNparams);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5078,7 +5079,7 @@ qemuDomainPinIOThread(virDomainPtr dom,
|
|||||||
&eventMaxparams, paramField, str) < 0)
|
&eventMaxparams, paramField, str) < 0)
|
||||||
goto endjob;
|
goto endjob;
|
||||||
|
|
||||||
event = virDomainEventTunableNewFromDom(dom, eventParams, eventNparams);
|
event = virDomainEventTunableNewFromDom(dom, &eventParams, eventNparams);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (persistentDef) {
|
if (persistentDef) {
|
||||||
@ -5106,6 +5107,7 @@ qemuDomainPinIOThread(virDomainPtr dom,
|
|||||||
cleanup:
|
cleanup:
|
||||||
virObjectEventStateQueue(driver->domainEventState, event);
|
virObjectEventStateQueue(driver->domainEventState, event);
|
||||||
virDomainObjEndAPI(&vm);
|
virDomainObjEndAPI(&vm);
|
||||||
|
virTypedParamsFree(eventParams, eventNparams);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9633,8 +9635,7 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom,
|
|||||||
qemuDomainSaveStatus(vm);
|
qemuDomainSaveStatus(vm);
|
||||||
|
|
||||||
if (eventNparams) {
|
if (eventNparams) {
|
||||||
event = virDomainEventTunableNewFromDom(dom, eventParams, eventNparams);
|
event = virDomainEventTunableNewFromDom(dom, &eventParams, eventNparams);
|
||||||
eventNparams = 0;
|
|
||||||
virObjectEventStateQueue(driver->domainEventState, event);
|
virObjectEventStateQueue(driver->domainEventState, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9654,8 +9655,7 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom,
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virDomainObjEndAPI(&vm);
|
virDomainObjEndAPI(&vm);
|
||||||
if (eventNparams)
|
virTypedParamsFree(eventParams, eventNparams);
|
||||||
virTypedParamsFree(eventParams, eventNparams);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#undef SCHED_RANGE_CHECK
|
#undef SCHED_RANGE_CHECK
|
||||||
@ -16159,8 +16159,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
|
|||||||
qemuDomainSaveStatus(vm);
|
qemuDomainSaveStatus(vm);
|
||||||
|
|
||||||
if (eventNparams) {
|
if (eventNparams) {
|
||||||
event = virDomainEventTunableNewFromDom(dom, eventParams, eventNparams);
|
event = virDomainEventTunableNewFromDom(dom, &eventParams, eventNparams);
|
||||||
eventNparams = 0;
|
|
||||||
virObjectEventStateQueue(driver->domainEventState, event);
|
virObjectEventStateQueue(driver->domainEventState, event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -16202,8 +16201,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
|
|||||||
VIR_FREE(info.group_name);
|
VIR_FREE(info.group_name);
|
||||||
VIR_FREE(conf_info.group_name);
|
VIR_FREE(conf_info.group_name);
|
||||||
virDomainObjEndAPI(&vm);
|
virDomainObjEndAPI(&vm);
|
||||||
if (eventNparams)
|
virTypedParamsFree(eventParams, eventNparams);
|
||||||
virTypedParamsFree(eventParams, eventNparams);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5078,7 +5078,7 @@ remoteDomainBuildEventCallbackTunable(virNetClientProgram *prog G_GNUC_UNUSED,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
event = virDomainEventTunableNewFromDom(dom, params, nparams);
|
event = virDomainEventTunableNewFromDom(dom, ¶ms, nparams);
|
||||||
|
|
||||||
virObjectUnref(dom);
|
virObjectUnref(dom);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user