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 *dev = usb_create(bus, name);
|
||||
if (!dev) {
|
||||
hw_error("Failed to create USB device '%s'\n", name);
|
||||
}
|
||||
qdev_init_nofail(&dev->qdev);
|
||||
return dev;
|
||||
}
|
||||
|
@ -592,6 +592,9 @@ static USBDevice *usb_msd_init(const char *filename)
|
||||
|
||||
/* create guest device */
|
||||
dev = usb_create(NULL /* FIXME */, "usb-storage");
|
||||
if (!dev) {
|
||||
return NULL;
|
||||
}
|
||||
qdev_prop_set_drive(&dev->qdev, "drive", dinfo);
|
||||
if (qdev_init(&dev->qdev) < 0)
|
||||
return NULL;
|
||||
|
@ -1491,6 +1491,9 @@ static USBDevice *usb_net_init(const char *cmdline)
|
||||
}
|
||||
|
||||
dev = usb_create(NULL /* FIXME */, "usb-net");
|
||||
if (!dev) {
|
||||
return NULL;
|
||||
}
|
||||
qdev_set_nic_properties(&dev->qdev, &nd_table[idx]);
|
||||
qdev_init_nofail(&dev->qdev);
|
||||
return dev;
|
||||
|
@ -594,6 +594,9 @@ static USBDevice *usb_serial_init(const char *filename)
|
||||
return NULL;
|
||||
|
||||
dev = usb_create(NULL /* FIXME */, "usb-serial");
|
||||
if (!dev) {
|
||||
return NULL;
|
||||
}
|
||||
qdev_prop_set_chr(&dev->qdev, "chardev", cdrv);
|
||||
if (vendorid)
|
||||
qdev_prop_set_uint16(&dev->qdev, "vendorid", vendorid);
|
||||
|
Loading…
Reference in New Issue
Block a user