aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrajesh.shah@intel.com <rajesh.shah@intel.com>2005-10-13 15:05:44 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2005-10-28 18:37:01 -0400
commitc2608a111b621d5cf0e4c2876d79e67333ce5341 (patch)
tree0e90b0bc85f026c74434f132760d7a4e12cf4eab
parent7c8942f993dc069db0e0327a343bbec8a6e96074 (diff)
[PATCH] shpchp: fix oops at driver unload
At unload time, the shpchp driver does not remove sysfs files it had created in the driver's probe entry point. This patch fixes this problem. Signed-off-by: Rajesh Shah <rajesh.shah@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/pci/hotplug/shpchp.h1
-rw-r--r--drivers/pci/hotplug/shpchp_core.c1
-rw-r--r--drivers/pci/hotplug/shpchp_sysfs.c5
3 files changed, 7 insertions, 0 deletions
diff --git a/drivers/pci/hotplug/shpchp.h b/drivers/pci/hotplug/shpchp.h
index dae1543a4e28..abe2cf411e68 100644
--- a/drivers/pci/hotplug/shpchp.h
+++ b/drivers/pci/hotplug/shpchp.h
@@ -173,6 +173,7 @@ extern void get_hp_params_from_firmware(struct pci_dev *dev,
173 struct hotplug_params *hpp); 173 struct hotplug_params *hpp);
174extern int shpchprm_get_physical_slot_number(struct controller *ctrl, 174extern int shpchprm_get_physical_slot_number(struct controller *ctrl,
175 u32 *sun, u8 busnum, u8 devnum); 175 u32 *sun, u8 busnum, u8 devnum);
176extern void shpchp_remove_ctrl_files(struct controller *ctrl);
176 177
177 178
178/* Global variables */ 179/* Global variables */
diff --git a/drivers/pci/hotplug/shpchp_core.c b/drivers/pci/hotplug/shpchp_core.c
index 6a2b4a0193aa..63628e01dd43 100644
--- a/drivers/pci/hotplug/shpchp_core.c
+++ b/drivers/pci/hotplug/shpchp_core.c
@@ -480,6 +480,7 @@ static void __exit unload_shpchpd(void)
480 ctrl = shpchp_ctrl_list; 480 ctrl = shpchp_ctrl_list;
481 481
482 while (ctrl) { 482 while (ctrl) {
483 shpchp_remove_ctrl_files(ctrl);
483 cleanup_slots(ctrl); 484 cleanup_slots(ctrl);
484 485
485 kfree (ctrl->pci_bus); 486 kfree (ctrl->pci_bus);
diff --git a/drivers/pci/hotplug/shpchp_sysfs.c b/drivers/pci/hotplug/shpchp_sysfs.c
index 807ef66899c7..f5cfbf2c047c 100644
--- a/drivers/pci/hotplug/shpchp_sysfs.c
+++ b/drivers/pci/hotplug/shpchp_sysfs.c
@@ -89,3 +89,8 @@ void shpchp_create_ctrl_files (struct controller *ctrl)
89{ 89{
90 device_create_file (&ctrl->pci_dev->dev, &dev_attr_ctrl); 90 device_create_file (&ctrl->pci_dev->dev, &dev_attr_ctrl);
91} 91}
92
93void shpchp_remove_ctrl_files(struct controller *ctrl)
94{
95 device_remove_file(&ctrl->pci_dev->dev, &dev_attr_ctrl);
96}