]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: hotplug: Rollback FD passthrough for 'slirpfd' and 'vdpafd' on hotplug failure
authorPeter Krempa <pkrempa@redhat.com>
Mon, 12 Aug 2024 14:04:20 +0000 (16:04 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 13 Aug 2024 14:34:47 +0000 (16:34 +0200)
On failure to plug the device the cleanup path didn't roll back the FD
passing to qemu thus qemu would hold the FDs indefinitely.

Resolves: https://issues.redhat.com/browse/RHEL-53964
Fixes: b79abf9c3cdab8bcecfa8769629a4cdf4bf0b6c3 (vdpafd)
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_hotplug.c

index 7cb180050439de236eee934df1224511136a044d..75b97cf7367b51d50ebda9fc0baed403488f0ebf 100644 (file)
@@ -1456,6 +1456,9 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
         VIR_WARN("Failed to remove network backend for netdev %s",
                  netdev_name);
 
+    qemuFDPassTransferMonitorRollback(netpriv->vdpafd, priv->mon);
+    qemuFDPassDirectTransferMonitorRollback(netpriv->slirpfd, priv->mon);
+
     for (n = netpriv->tapfds; n; n = n->next)
         qemuFDPassDirectTransferMonitorRollback(n->data, priv->mon);