mirror of https://github.com/xemu-project/xemu.git
Fix -usbdevice crash
If -usbdevice is used on a machine with no USB busses, usb_create will fail and return NULL. Patch below handles this failure gracefully rather than crashing when we try to init the device. Signed-off-by: Paul Brook <paul@codesourcery.com>
This commit is contained in:
parent
23f2166d73
commit
d44168fffa
|
@ -102,6 +102,9 @@ USBDevice *usb_create(USBBus *bus, const char *name)
|
||||||
USBDevice *usb_create_simple(USBBus *bus, const char *name)
|
USBDevice *usb_create_simple(USBBus *bus, const char *name)
|
||||||
{
|
{
|
||||||
USBDevice *dev = usb_create(bus, name);
|
USBDevice *dev = usb_create(bus, name);
|
||||||
|
if (!dev) {
|
||||||
|
hw_error("Failed to create USB device '%s'\n", name);
|
||||||
|
}
|
||||||
qdev_init_nofail(&dev->qdev);
|
qdev_init_nofail(&dev->qdev);
|
||||||
return dev;
|
return dev;
|
||||||
}
|
}
|
||||||
|
|
|
@ -592,6 +592,9 @@ static USBDevice *usb_msd_init(const char *filename)
|
||||||
|
|
||||||
/* create guest device */
|
/* create guest device */
|
||||||
dev = usb_create(NULL /* FIXME */, "usb-storage");
|
dev = usb_create(NULL /* FIXME */, "usb-storage");
|
||||||
|
if (!dev) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
qdev_prop_set_drive(&dev->qdev, "drive", dinfo);
|
qdev_prop_set_drive(&dev->qdev, "drive", dinfo);
|
||||||
if (qdev_init(&dev->qdev) < 0)
|
if (qdev_init(&dev->qdev) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -1491,6 +1491,9 @@ static USBDevice *usb_net_init(const char *cmdline)
|
||||||
}
|
}
|
||||||
|
|
||||||
dev = usb_create(NULL /* FIXME */, "usb-net");
|
dev = usb_create(NULL /* FIXME */, "usb-net");
|
||||||
|
if (!dev) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
qdev_set_nic_properties(&dev->qdev, &nd_table[idx]);
|
qdev_set_nic_properties(&dev->qdev, &nd_table[idx]);
|
||||||
qdev_init_nofail(&dev->qdev);
|
qdev_init_nofail(&dev->qdev);
|
||||||
return dev;
|
return dev;
|
||||||
|
|
|
@ -594,6 +594,9 @@ static USBDevice *usb_serial_init(const char *filename)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
dev = usb_create(NULL /* FIXME */, "usb-serial");
|
dev = usb_create(NULL /* FIXME */, "usb-serial");
|
||||||
|
if (!dev) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
qdev_prop_set_chr(&dev->qdev, "chardev", cdrv);
|
qdev_prop_set_chr(&dev->qdev, "chardev", cdrv);
|
||||||
if (vendorid)
|
if (vendorid)
|
||||||
qdev_prop_set_uint16(&dev->qdev, "vendorid", vendorid);
|
qdev_prop_set_uint16(&dev->qdev, "vendorid", vendorid);
|
||||||
|
|
Loading…
Reference in New Issue