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:
lu zhipeng 2022-09-26 19:55:52 +08:00 committed by Jiri Denemark
parent fa2a7f888c
commit d95c79fbd0
4 changed files with 19 additions and 21 deletions

View File

@ -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,

View File

@ -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 *

View File

@ -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;
} }

View File

@ -5078,7 +5078,7 @@ remoteDomainBuildEventCallbackTunable(virNetClientProgram *prog G_GNUC_UNUSED,
return; return;
} }
event = virDomainEventTunableNewFromDom(dom, params, nparams); event = virDomainEventTunableNewFromDom(dom, &params, nparams);
virObjectUnref(dom); virObjectUnref(dom);