diff --git a/src/add-ons/kernel/bus_managers/pci/pci.cpp b/src/add-ons/kernel/bus_managers/pci/pci.cpp index 79df9cd80b..d6b7d64db9 100644 --- a/src/add-ons/kernel/bus_managers/pci/pci.cpp +++ b/src/add-ons/kernel/bus_managers/pci/pci.cpp @@ -1301,12 +1301,13 @@ PCIDev * PCI::_FindDevice(PCIBus *current, int domain, uint8 bus, uint8 device, uint8 function) { - if (current->domain == domain && current->bus == bus) { + if (current->domain == domain) { // search device on this bus for (PCIDev *child = current->child; child != NULL; child = child->next) { - if (child->device == device && child->function == function) + if (child->bus == bus && child->device == device + && child->function == function) return child; if (child->child != NULL) { diff --git a/src/add-ons/kernel/bus_managers/pci/pci_device.cpp b/src/add-ons/kernel/bus_managers/pci/pci_device.cpp index fe795fdaad..78c0099b74 100644 --- a/src/add-ons/kernel/bus_managers/pci/pci_device.cpp +++ b/src/add-ons/kernel/bus_managers/pci/pci_device.cpp @@ -124,6 +124,9 @@ pci_device_init_driver(device_node* node, void** _cookie) return B_NO_MEMORY; device->device = gPCI->FindDevice(domain, bus, deviceNumber, function); + if (device->device == NULL) + panic("device not found!\n"); + device->node = node; *_cookie = device;