summaryrefslogtreecommitdiff
path: root/drivers/pci
diff options
context:
space:
mode:
authorMichael Ellerman <michael@ellerman.id.au>2007-04-05 17:19:08 +1000
committerGreg Kroah-Hartman <gregkh@suse.de>2007-05-02 19:02:37 -0700
commit65891215e6b822c368fb3f36abf129ed48af8be0 (patch)
tree6cc1de94ca66a8f627775d1ddff3600ee8236ed3 /drivers/pci
parentc9953a73e92df11edd812d863ff741877ea9e58c (diff)
downloadlinux-rpi3-65891215e6b822c368fb3f36abf129ed48af8be0.tar.gz
linux-rpi3-65891215e6b822c368fb3f36abf129ed48af8be0.tar.bz2
linux-rpi3-65891215e6b822c368fb3f36abf129ed48af8be0.zip
PCI: Create alloc_pci_dev(), the one true way to create a struct pci_dev
There are currently several places in the kernel where we kmalloc() a struct pci_dev and start initialising it. It'd be preferable to have an allocator so we can ensure the pci_dev is correctly initialised in one place. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/probe.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 629edf39a07d..70d37bbf09bb 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -846,6 +846,21 @@ static void pci_release_bus_bridge_dev(struct device *dev)
kfree(dev);
}
+struct pci_dev *alloc_pci_dev(void)
+{
+ struct pci_dev *dev;
+
+ dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
+ if (!dev)
+ return NULL;
+
+ INIT_LIST_HEAD(&dev->global_list);
+ INIT_LIST_HEAD(&dev->bus_list);
+
+ return dev;
+}
+EXPORT_SYMBOL(alloc_pci_dev);
+
/*
* Read the config data for a PCI device, sanity-check it
* and fill in the dev structure...