The last thing assign_device() does is call into KVM_ASSIGN_PCI_DEVICE. If that fails, the device is not assigned, so we shouldn't then try to deassign it. If you try to assign the same device multiple times, you can get into a nasty fail-succeed-fail-succeed loop. And we certainly shouldn't take the assigned_out branch before we've even attempted to assign the device. Signed-off-by: Alex Williamson <alex.williamson@xxxxxxxxxx> --- hw/device-assignment.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/device-assignment.c b/hw/device-assignment.c index 2b963b5..7e53a95 100644 --- a/hw/device-assignment.c +++ b/hw/device-assignment.c @@ -1407,12 +1407,12 @@ static int assigned_initfn(struct PCIDevice *pci_dev) if (pci_enable_capability_support(pci_dev, 0, NULL, assigned_device_pci_cap_write_config, assigned_device_pci_cap_init) < 0) - goto assigned_out; + goto out; /* assign device to guest */ r = assign_device(dev); if (r < 0) - goto assigned_out; + goto out; /* assign irq for the device */ r = assign_irq(dev); -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html