On 11/04/2016 08:28 AM, Michal Privoznik wrote: > If there is an error hotpluging a net device (for whatever > reason) a rollback operation is performed. However, whilst doing > so various helper functions that are called report errors on > their own. This results in the original error to be overwritten > and thus misleading the user. > > Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> > --- > src/qemu/qemu_hotplug.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c > index e06862c..34f2135 100644 > --- a/src/qemu/qemu_hotplug.c > +++ b/src/qemu/qemu_hotplug.c > @@ -935,6 +935,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, > virDomainNetDefPtr net) > { > qemuDomainObjPrivatePtr priv = vm->privateData; > + virErrorPtr originalError = NULL; > char **tapfdName = NULL; > int *tapfd = NULL; > size_t tapfdSize = 0; > @@ -1320,6 +1321,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, > if (!virDomainObjIsActive(vm)) > goto cleanup; > > + originalError = virSaveLastError(); Coverity has found that there's a couple places between here and the virSetError/virFreeError below where we goto cleanup and thus would leak originalError John > if (vlan < 0) { > if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NETDEV)) { > char *netdev_name; > @@ -1350,6 +1352,8 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, > ignore_value(qemuDomainObjExitMonitor(driver, vm)); > VIR_FREE(hostnet_name); > } > + virSetError(originalError); > + virFreeError(originalError); > goto cleanup; > } > > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list