aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRandy Dunlap <rdunlap@xenotime.net>2006-07-09 01:58:25 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2006-09-26 20:43:52 -0400
commit20d516602c022997feb24a9f1a806fc986b9e4e8 (patch)
treecf74447266832d62cdb38e7ca29532c65848b60e
parent6397c75cbc4d7dbc3d07278b57c82a47dafb21b5 (diff)
PCIE: check and return bus_register errors
Have pcie_port_bus_register() notice and return errors. Mark it __must_check so that its caller(s) must check its return value. Signed-off-by: Randy Dunlap <rdunlap@xenotime.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/pci/pcie/portdrv.h2
-rw-r--r--drivers/pci/pcie/portdrv_core.c5
-rw-r--r--drivers/pci/pcie/portdrv_pci.c9
3 files changed, 11 insertions, 5 deletions
diff --git a/drivers/pci/pcie/portdrv.h b/drivers/pci/pcie/portdrv.h
index 1d317d22ee89..67fcd176babd 100644
--- a/drivers/pci/pcie/portdrv.h
+++ b/drivers/pci/pcie/portdrv.h
@@ -39,7 +39,7 @@ extern int pcie_port_device_suspend(struct pci_dev *dev, pm_message_t state);
39extern int pcie_port_device_resume(struct pci_dev *dev); 39extern int pcie_port_device_resume(struct pci_dev *dev);
40#endif 40#endif
41extern void pcie_port_device_remove(struct pci_dev *dev); 41extern void pcie_port_device_remove(struct pci_dev *dev);
42extern void pcie_port_bus_register(void); 42extern int pcie_port_bus_register(void);
43extern void pcie_port_bus_unregister(void); 43extern void pcie_port_bus_unregister(void);
44 44
45#endif /* _PORTDRV_H_ */ 45#endif /* _PORTDRV_H_ */
diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
index 55c662267868..cf9e810b4bf8 100644
--- a/drivers/pci/pcie/portdrv_core.c
+++ b/drivers/pci/pcie/portdrv_core.c
@@ -6,6 +6,7 @@
6 * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) 6 * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com)
7 */ 7 */
8 8
9#include <linux/compiler.h>
9#include <linux/module.h> 10#include <linux/module.h>
10#include <linux/pci.h> 11#include <linux/pci.h>
11#include <linux/kernel.h> 12#include <linux/kernel.h>
@@ -402,9 +403,9 @@ void pcie_port_device_remove(struct pci_dev *dev)
402 pci_disable_msi(dev); 403 pci_disable_msi(dev);
403} 404}
404 405
405void pcie_port_bus_register(void) 406int __must_check pcie_port_bus_register(void)
406{ 407{
407 bus_register(&pcie_port_bus_type); 408 return bus_register(&pcie_port_bus_type);
408} 409}
409 410
410void pcie_port_bus_unregister(void) 411void pcie_port_bus_unregister(void)
diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c
index 478d0d28f7ad..3284199ce396 100644
--- a/drivers/pci/pcie/portdrv_pci.c
+++ b/drivers/pci/pcie/portdrv_pci.c
@@ -129,12 +129,17 @@ static struct pci_driver pcie_portdrv = {
129 129
130static int __init pcie_portdrv_init(void) 130static int __init pcie_portdrv_init(void)
131{ 131{
132 int retval = 0; 132 int retval;
133 133
134 pcie_port_bus_register(); 134 retval = pcie_port_bus_register();
135 if (retval) {
136 printk(KERN_WARNING "PCIE: bus_register error: %d\n", retval);
137 goto out;
138 }
135 retval = pci_register_driver(&pcie_portdrv); 139 retval = pci_register_driver(&pcie_portdrv);
136 if (retval) 140 if (retval)
137 pcie_port_bus_unregister(); 141 pcie_port_bus_unregister();
142 out:
138 return retval; 143 return retval;
139} 144}
140 145