From ace66546187b0073a411eeff09b36e8cb55699d0 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sun, 14 Apr 2019 18:50:10 -0400 Subject: [PATCH] nvme_disk: Get the correct PCI information struct. We want the one of the parent object, not the parent's parent. --- .../kernel/drivers/disk/nvme/nvme_disk.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/add-ons/kernel/drivers/disk/nvme/nvme_disk.cpp b/src/add-ons/kernel/drivers/disk/nvme/nvme_disk.cpp index 2c72d113a0..1295547702 100644 --- a/src/add-ons/kernel/drivers/disk/nvme/nvme_disk.cpp +++ b/src/add-ons/kernel/drivers/disk/nvme/nvme_disk.cpp @@ -67,8 +67,6 @@ static device_manager_info* sDeviceManager; typedef struct { device_node* node; - pci_device_module_info* pci; - pci_device* device; pci_info info; struct nvme_ctrlr* ctrlr; @@ -151,15 +149,14 @@ nvme_disk_init_device(void* _info, void** _cookie) CALLED(); nvme_disk_driver_info* info = (nvme_disk_driver_info*)_info; + pci_device_module_info* pci; + pci_device* pcidev; device_node* parent = sDeviceManager->get_parent_node(info->node); - device_node* pciParent = sDeviceManager->get_parent_node(parent); - sDeviceManager->get_driver(pciParent, (driver_module_info**)&info->pci, - (void**)&info->device); - sDeviceManager->put_node(pciParent); + sDeviceManager->get_driver(parent, (driver_module_info**)&pci, + (void**)&pcidev); + pci->get_pci_info(pcidev, &info->info); sDeviceManager->put_node(parent); - info->pci->get_pci_info(info->device, &info->info); - // construct the libnvme pci_device struct pci_device* device = new pci_device; device->vendor_id = info->info.vendor_id; @@ -425,16 +422,15 @@ nvme_disk_supports_device(device_node *parent) static status_t -nvme_disk_register_device(device_node *node) +nvme_disk_register_device(device_node* parent) { CALLED(); - // ready to register device_attr attrs[] = { { NULL } }; - return sDeviceManager->register_node(node, NVME_DISK_DRIVER_MODULE_NAME, + return sDeviceManager->register_node(parent, NVME_DISK_DRIVER_MODULE_NAME, attrs, NULL, NULL); }