mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
conf: resctrl object is not properly handled
resctrl object stored in def->resctrls is shared by cachetune and memorytune. The domain xml configuration is parsed firstly for cachetune then memorytune, and the resctrl object will not be created in parsing settings for memorytune once it found sharing exists. But resctrl is improperly freed when sharing happens. Signed-off-by: Wang Huaqiang <huaqiang.wang@intel.com> Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
25b94e3b59
commit
51da92f418
@ -19590,7 +19590,6 @@ virDomainMemorytuneDefParse(virDomainDefPtr def,
|
||||
VIR_AUTOUNREF(virResctrlAllocPtr) alloc = NULL;
|
||||
ssize_t i = 0;
|
||||
int n;
|
||||
int ret = -1;
|
||||
|
||||
ctxt->node = node;
|
||||
|
||||
@ -19632,14 +19631,13 @@ virDomainMemorytuneDefParse(virDomainDefPtr def,
|
||||
if (!(resctrl = virDomainResctrlNew(node, alloc, vcpus, flags)))
|
||||
return -1;
|
||||
|
||||
if (VIR_APPEND_ELEMENT(def->resctrls, def->nresctrls, resctrl) < 0)
|
||||
goto cleanup;
|
||||
if (VIR_APPEND_ELEMENT(def->resctrls, def->nresctrls, resctrl) < 0) {
|
||||
virDomainResctrlDefFree(resctrl);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
cleanup:
|
||||
virDomainResctrlDefFree(resctrl);
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -5,6 +5,10 @@
|
||||
<currentMemory unit='KiB'>219136</currentMemory>
|
||||
<vcpu placement='static'>4</vcpu>
|
||||
<cputune>
|
||||
<cachetune vcpus='0-1'>
|
||||
<cache id='0' level='3' type='both' size='768' unit='KiB'/>
|
||||
<cache id='1' level='3' type='both' size='768' unit='KiB'/>
|
||||
</cachetune>
|
||||
<memorytune vcpus='0-1'>
|
||||
<node id='0' bandwidth='20'/>
|
||||
<node id='1' bandwidth='30'/>
|
||||
|
Loading…
Reference in New Issue
Block a user