diff --git a/hw/pci-hotplug.c b/hw/pci-hotplug.c index c38a1273944c8620443d651d83a6741ce3220d01..ccd2cf3cac7dea8e4f97b241e9429beec9942682 100644 --- a/hw/pci-hotplug.c +++ b/hw/pci-hotplug.c @@ -172,8 +172,8 @@ static PCIDevice *qemu_pci_hot_add_storage(Monitor *mon, default: dev = NULL; } - if (dev) - qdev_init(&dev->qdev); + if (!dev || qdev_init(&dev->qdev) < 0) + return NULL; return dev; } diff --git a/hw/pci.c b/hw/pci.c index 1debdab4b4daaeb6ac104c121e817a30fb563ded..da5cc5625603b81e62ebf986fada5e0aa4fab546 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -833,6 +833,7 @@ static const char * const pci_nic_names[] = { }; /* Initialize a PCI NIC. */ +/* FIXME callers should check for failure, but don't */ PCIDevice *pci_nic_init(NICInfo *nd, const char *default_model, const char *default_devaddr) { diff --git a/hw/scsi-bus.c b/hw/scsi-bus.c index fe8991e9cea175b768e0bb21acace9ba2a9b28ca..41992e52dfcbd5cf2a62d4cc3e22adab22b3919e 100644 --- a/hw/scsi-bus.c +++ b/hw/scsi-bus.c @@ -82,6 +82,7 @@ void scsi_qdev_register(SCSIDeviceInfo *info) } /* handle legacy '-drive if=scsi,...' cmd line args */ +/* FIXME callers should check for failure, but don't */ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, DriveInfo *dinfo, int unit) { const char *driver; @@ -91,7 +92,8 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, DriveInfo *dinfo, int unit) dev = qdev_create(&bus->qbus, driver); qdev_prop_set_uint32(dev, "scsi-id", unit); qdev_prop_set_drive(dev, "drive", dinfo); - qdev_init(dev); + if (qdev_init(dev) < 0) + return NULL; return DO_UPCAST(SCSIDevice, qdev, dev); } diff --git a/hw/usb-msd.c b/hw/usb-msd.c index e090014f74f0221fad3d4f3cb5389961ce39c73f..dd3010e0068a761ebdebc957c95b3f42bd87eff6 100644 --- a/hw/usb-msd.c +++ b/hw/usb-msd.c @@ -571,7 +571,8 @@ USBDevice *usb_msd_init(const char *filename) /* create guest device */ dev = usb_create(NULL /* FIXME */, "QEMU USB MSD"); qdev_prop_set_drive(&dev->qdev, "drive", dinfo); - qdev_init(&dev->qdev); + if (qdev_init(&dev->qdev) < 0) + return NULL; return dev; } diff --git a/usb-linux.c b/usb-linux.c index 77cbf1ba6ccee3a9fa3d6ebfefcea839a137cf20..9e5d9c40efa60d39ae1913a45eee19d5f94917d8 100644 --- a/usb-linux.c +++ b/usb-linux.c @@ -980,12 +980,14 @@ static USBDevice *usb_host_device_open_addr(int bus_num, int addr, const char *p hostdev_link(dev); - qdev_init(&d->qdev); + if (qdev_init(&d->qdev) < 0) + goto fail_no_qdev; return (USBDevice *) dev; fail: if (d) qdev_free(&d->qdev); +fail_no_qdev: if (fd != -1) close(fd); return NULL; @@ -1389,7 +1391,7 @@ static int usb_host_auto_scan(void *opaque, int bus_num, int addr, /* We got a match */ - /* Allredy attached ? */ + /* Already attached ? */ if (hostdev_find(bus_num, addr)) return 0;