diff --git a/gasket_core.c b/gasket_core.c index 270815d..e47d963 100644 --- a/gasket_core.c +++ b/gasket_core.c @@ -450,6 +450,7 @@ static int gasket_alloc_dev( gasket_dev->internal_desc = internal_desc; gasket_dev->dev_idx = dev_idx; snprintf(gasket_dev->kobj_name, GASKET_NAME_MAX, "%s", kobj_name); + gasket_dev->dev = parent; /* gasket_bar_data is uninitialized. */ gasket_dev->num_page_tables = driver_desc->num_page_tables; /* max_page_table_size and *page table are uninit'ed */ @@ -935,7 +936,7 @@ static int gasket_enable_dev( &gasket_dev->bar_data[ driver_desc->page_table_bar_index], &driver_desc->page_table_configs[tbl_idx], - &gasket_dev->pci_dev->dev, gasket_dev->pci_dev, true); + gasket_dev->dev, gasket_dev->pci_dev, true); if (ret) { gasket_log_error( gasket_dev, @@ -2038,7 +2039,7 @@ const struct gasket_driver_desc *gasket_get_driver_desc(struct gasket_dev *dev) */ struct device *gasket_get_device(struct gasket_dev *dev) { - return &dev->pci_dev->dev; + return dev->dev; } /** diff --git a/gasket_core.h b/gasket_core.h index bf4ed37..8bd431a 100644 --- a/gasket_core.h +++ b/gasket_core.h @@ -263,6 +263,9 @@ struct gasket_dev { /* Pointer to the internal driver description for this device. */ struct gasket_internal_desc *internal_desc; + /* Device info */ + struct device *dev; + /* PCI subsystem metadata. */ struct pci_dev *pci_dev;