diff --git a/hw/pci.c b/hw/pci.c index ba0598ba1d1d21ddd2b1d4e578e606ed4abccd44..b904a4ecb63d1730f750cd2d6722fa316f9ad1bd 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -1681,10 +1681,12 @@ static int pci_qdev_init(DeviceState *qdev, DeviceInfo *base) do_pci_unregister_device(pci_dev); return -1; } - rc = info->init(pci_dev); - if (rc != 0) { - do_pci_unregister_device(pci_dev); - return rc; + if (info->init) { + rc = info->init(pci_dev); + if (rc != 0) { + do_pci_unregister_device(pci_dev); + return rc; + } } /* rom loading */