From 805b1eec7decebd9849d391d990891d9dae3ff89 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 30 May 2024 11:51:07 +0200 Subject: [PATCH] qemu_hotplug: Clear QoS if required in qemuDomainChangeNet() In one of my recent commits, I've introduced virDomainInterfaceClearQoS() which is a helper that either calls virNetDevBandwidthClear() ('tc' implementation) or virNetDevOpenvswitchInterfaceClearQos() (for ovs ifaces). But I made a micro optimization which leads to a bug: the function checks whether passed iface has any QoS set and returns early if it has none. In majority of cases this is right thing to do, but when removing QoS on virDomainUpdateDeviceFlags() this is problematic. The new definition (passed as argument to virDomainInterfaceClearQoS()) contains no QoS (because user requested its removal) and thus instead of removing the old QoS setting nothing is done. Fortunately, the fix is simple - pass olddev which contains the old QoS setting. Fixes: 812a146dfe784315edece43d09f8d9e432f8230e Signed-off-by: Michal Privoznik Reviewed-by: Jiri Denemark --- src/qemu/qemu_hotplug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 4739beead8..c98b0b5d52 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -4071,7 +4071,7 @@ qemuDomainChangeNet(virQEMUDriver *driver, goto cleanup; } } else { - if (virDomainInterfaceClearQoS(vm->def, newdev) < 0) + if (virDomainInterfaceClearQoS(vm->def, olddev) < 0) goto cleanup; } -- 2.39.5