From 7c9f1243c48c90ce5851e5d466aa1d27bcd90fa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sat, 13 Dec 2008 02:30:07 +0000 Subject: [PATCH] return a proper error after the panic when no device is found, and avoid a leak. Shouldn't happen anyway, but doesn't hurt. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28803 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/bus_managers/pci/pci_device.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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 78c0099b74..15c45662cd 100644 --- a/src/add-ons/kernel/bus_managers/pci/pci_device.cpp +++ b/src/add-ons/kernel/bus_managers/pci/pci_device.cpp @@ -119,14 +119,17 @@ pci_device_init_driver(device_node* node, void** _cookie) &function, false) != B_OK) return B_ERROR; + PCIDev *dev = gPCI->FindDevice(domain, bus, deviceNumber, function); + if (dev == NULL) { + panic("device not found!\n"); + return ENODEV; + } + pci_device* device = (pci_device*)malloc(sizeof(*device)); if (device == NULL) return B_NO_MEMORY; - device->device = gPCI->FindDevice(domain, bus, deviceNumber, function); - if (device->device == NULL) - panic("device not found!\n"); - + device->device = dev; device->node = node; *_cookie = device;