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,
|
||||
const char *name,
|
||||
unsigned char *uuid,
|
||||
virTypedParameterPtr params,
|
||||
virTypedParameterPtr *params,
|
||||
int nparams)
|
||||
{
|
||||
virDomainEventTunable *ev;
|
||||
@ -1508,19 +1508,19 @@ virDomainEventTunableNew(int id,
|
||||
id, name, uuid)))
|
||||
goto error;
|
||||
|
||||
ev->params = params;
|
||||
ev->params = *params;
|
||||
ev->nparams = nparams;
|
||||
|
||||
*params = NULL;
|
||||
return (virObjectEvent *)ev;
|
||||
|
||||
error:
|
||||
virTypedParamsFree(params, nparams);
|
||||
virTypedParamsFree(*params, nparams);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
virObjectEvent *
|
||||
virDomainEventTunableNewFromObj(virDomainObj *obj,
|
||||
virTypedParameterPtr params,
|
||||
virTypedParameterPtr *params,
|
||||
int nparams)
|
||||
{
|
||||
return virDomainEventTunableNew(obj->def->id,
|
||||
@ -1532,7 +1532,7 @@ virDomainEventTunableNewFromObj(virDomainObj *obj,
|
||||
|
||||
virObjectEvent *
|
||||
virDomainEventTunableNewFromDom(virDomainPtr dom,
|
||||
virTypedParameterPtr params,
|
||||
virTypedParameterPtr *params,
|
||||
int nparams)
|
||||
{
|
||||
return virDomainEventTunableNew(dom->id,
|
||||
|
@ -195,11 +195,11 @@ virDomainEventDeviceRemovalFailedNewFromDom(virDomainPtr dom,
|
||||
|
||||
virObjectEvent *
|
||||
virDomainEventTunableNewFromObj(virDomainObj *obj,
|
||||
virTypedParameterPtr params,
|
||||
virTypedParameterPtr *params,
|
||||
int nparams);
|
||||
virObjectEvent *
|
||||
virDomainEventTunableNewFromDom(virDomainPtr dom,
|
||||
virTypedParameterPtr params,
|
||||
virTypedParameterPtr *params,
|
||||
int nparams);
|
||||
|
||||
virObjectEvent *
|
||||
|
@ -4472,12 +4472,12 @@ qemuDomainPinVcpuLive(virDomainObj *vm,
|
||||
&eventMaxparams, paramField, str) < 0)
|
||||
goto cleanup;
|
||||
|
||||
event = virDomainEventTunableNewFromObj(vm, eventParams, eventNparams);
|
||||
|
||||
event = virDomainEventTunableNewFromObj(vm, &eventParams, eventNparams);
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
virObjectEventStateQueue(driver->domainEventState, event);
|
||||
virTypedParamsFree(eventParams, eventNparams);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -4681,7 +4681,7 @@ qemuDomainPinEmulator(virDomainPtr dom,
|
||||
str) < 0)
|
||||
goto endjob;
|
||||
|
||||
event = virDomainEventTunableNewFromDom(dom, eventParams, eventNparams);
|
||||
event = virDomainEventTunableNewFromDom(dom, &eventParams, eventNparams);
|
||||
}
|
||||
|
||||
if (persistentDef) {
|
||||
@ -4700,6 +4700,7 @@ qemuDomainPinEmulator(virDomainPtr dom,
|
||||
cleanup:
|
||||
virObjectEventStateQueue(driver->domainEventState, event);
|
||||
virDomainObjEndAPI(&vm);
|
||||
virTypedParamsFree(eventParams, eventNparams);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -5078,7 +5079,7 @@ qemuDomainPinIOThread(virDomainPtr dom,
|
||||
&eventMaxparams, paramField, str) < 0)
|
||||
goto endjob;
|
||||
|
||||
event = virDomainEventTunableNewFromDom(dom, eventParams, eventNparams);
|
||||
event = virDomainEventTunableNewFromDom(dom, &eventParams, eventNparams);
|
||||
}
|
||||
|
||||
if (persistentDef) {
|
||||
@ -5106,6 +5107,7 @@ qemuDomainPinIOThread(virDomainPtr dom,
|
||||
cleanup:
|
||||
virObjectEventStateQueue(driver->domainEventState, event);
|
||||
virDomainObjEndAPI(&vm);
|
||||
virTypedParamsFree(eventParams, eventNparams);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -9633,8 +9635,7 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom,
|
||||
qemuDomainSaveStatus(vm);
|
||||
|
||||
if (eventNparams) {
|
||||
event = virDomainEventTunableNewFromDom(dom, eventParams, eventNparams);
|
||||
eventNparams = 0;
|
||||
event = virDomainEventTunableNewFromDom(dom, &eventParams, eventNparams);
|
||||
virObjectEventStateQueue(driver->domainEventState, event);
|
||||
}
|
||||
|
||||
@ -9654,8 +9655,7 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom,
|
||||
|
||||
cleanup:
|
||||
virDomainObjEndAPI(&vm);
|
||||
if (eventNparams)
|
||||
virTypedParamsFree(eventParams, eventNparams);
|
||||
virTypedParamsFree(eventParams, eventNparams);
|
||||
return ret;
|
||||
}
|
||||
#undef SCHED_RANGE_CHECK
|
||||
@ -16159,8 +16159,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
|
||||
qemuDomainSaveStatus(vm);
|
||||
|
||||
if (eventNparams) {
|
||||
event = virDomainEventTunableNewFromDom(dom, eventParams, eventNparams);
|
||||
eventNparams = 0;
|
||||
event = virDomainEventTunableNewFromDom(dom, &eventParams, eventNparams);
|
||||
virObjectEventStateQueue(driver->domainEventState, event);
|
||||
}
|
||||
}
|
||||
@ -16202,8 +16201,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
|
||||
VIR_FREE(info.group_name);
|
||||
VIR_FREE(conf_info.group_name);
|
||||
virDomainObjEndAPI(&vm);
|
||||
if (eventNparams)
|
||||
virTypedParamsFree(eventParams, eventNparams);
|
||||
virTypedParamsFree(eventParams, eventNparams);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -5078,7 +5078,7 @@ remoteDomainBuildEventCallbackTunable(virNetClientProgram *prog G_GNUC_UNUSED,
|
||||
return;
|
||||
}
|
||||
|
||||
event = virDomainEventTunableNewFromDom(dom, params, nparams);
|
||||
event = virDomainEventTunableNewFromDom(dom, ¶ms, nparams);
|
||||
|
||||
virObjectUnref(dom);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user