On 12/31/2011 02:59 AM, ajia@xxxxxxxxxx wrote: > From: Alex Jia <ajia@xxxxxxxxxx> > > Detected by Coverity. Leaks introduced in commit 93ab585 and > commit e8d6b29. > > Signed-off-by: Alex Jia <ajia@xxxxxxxxxx> > --- > src/qemu/qemu_driver.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > Part 2: > @@ -7867,7 +7868,7 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, > virDomainDefPtr persistentDef = NULL; > int ret = -1; > virDomainNetDefPtr net = NULL, persistentNet = NULL; > - virNetDevBandwidthPtr bandwidth = NULL; > + virNetDevBandwidthPtr bandwidth = NULL, newBandwidth = NULL; > > virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | > VIR_DOMAIN_AFFECT_CONFIG, -1); > @@ -7989,8 +7990,6 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, > } > > if (flags & VIR_DOMAIN_AFFECT_LIVE) { > - virNetDevBandwidthPtr newBandwidth; > - > if (VIR_ALLOC(newBandwidth) < 0) { > virReportOOMError(); > goto cleanup; > @@ -8056,6 +8055,7 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, > ret = 0; > cleanup: > virNetDevBandwidthFree(bandwidth); > + virNetDevBandwidthFree(newBandwidth); > virCgroupFree(&group); > if (vm) > virDomainObjUnlock(vm); ACK, but I'm also squashing this in before pushing (VIR_ALLOC guarantees 0 initialization so memset is not needed; fix some grammar in a comment, and avoid long lines): diff --git i/src/qemu/qemu_driver.c w/src/qemu/qemu_driver.c index 0885a5e..e93fe87 100644 --- i/src/qemu/qemu_driver.c +++ w/src/qemu/qemu_driver.c @@ -7991,20 +7991,20 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, goto cleanup; } - memset(newBandwidth, 0, sizeof(newBandwidth)); - /* virNetDevBandwidthSet() will clear any previous value of * bandwidth parameters, so merge with old bandwidth parameters - * here to prevent them from losing. */ + * here to prevent them from being lost. */ if (bandwidth->in || net->bandwidth->in) { if (VIR_ALLOC(newBandwidth->in) < 0) { virReportOOMError(); goto cleanup; } if (bandwidth->in) - memcpy(newBandwidth->in, bandwidth->in, sizeof(*newBandwidth->in)); + memcpy(newBandwidth->in, bandwidth->in, + sizeof(*newBandwidth->in)); else if (net->bandwidth->in) - memcpy(newBandwidth->in, net->bandwidth->in, sizeof(*newBandwidth->in)); + memcpy(newBandwidth->in, net->bandwidth->in, + sizeof(*newBandwidth->in)); } if (bandwidth->out || net->bandwidth->out) { if (VIR_ALLOC(newBandwidth->out) < 0) { @@ -8012,9 +8012,11 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, goto cleanup; } if (bandwidth->out) - memcpy(newBandwidth->out, bandwidth->out, sizeof(*newBandwidth->out)); + memcpy(newBandwidth->out, bandwidth->out, + sizeof(*newBandwidth->out)); else if (net->bandwidth->out) - memcpy(newBandwidth->out, net->bandwidth->out, sizeof(*newBandwidth->out)); + memcpy(newBandwidth->out, net->bandwidth->out, + sizeof(*newBandwidth->out)); } if (virNetDevBandwidthSet(net->ifname, newBandwidth) < 0) { -- Eric Blake eblake@xxxxxxxxxx +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list