[libvirt] [PATCH 1/2] qemuDomainAttachNetDevice: Don't overwrite error on rollback
John Ferlan
jferlan at redhat.com
Fri Nov 11 12:19:47 UTC 2016
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 at redhat.com>
> ---
> 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;
> }
>
>
More information about the libvir-list
mailing list