|
@@ -102,10 +102,18 @@ static void pci_proxy_dev_realize(PCIDevice *device, Error **errp)
|
|
|
}
|
|
|
|
|
|
dev->ioc = qio_channel_new_fd(fd, errp);
|
|
|
+ if (!dev->ioc) {
|
|
|
+ close(fd);
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
error_setg(&dev->migration_blocker, "%s does not support migration",
|
|
|
TYPE_PCI_PROXY_DEV);
|
|
|
- migrate_add_blocker(dev->migration_blocker, errp);
|
|
|
+ if (migrate_add_blocker(dev->migration_blocker, errp) < 0) {
|
|
|
+ error_free(dev->migration_blocker);
|
|
|
+ object_unref(dev->ioc);
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
qemu_mutex_init(&dev->io_mutex);
|
|
|
qio_channel_set_blocking(dev->ioc, true, NULL);
|