From f8473d0f854061e62030c80cf842eec006e88507 Mon Sep 17 00:00:00 2001 From: Kenji Kaneshige Date: Thu, 26 Jan 2006 09:58:30 +0900 Subject: [PATCH] --- yaml --- r: 23186 b: refs/heads/master c: a4534560815ffc525bfbe465a290ce048aab4c01 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/pci/hotplug/shpchp.h | 4 ++-- trunk/drivers/pci/hotplug/shpchp_core.c | 25 +++++++------------------ trunk/drivers/pci/hotplug/shpchp_ctrl.c | 2 +- 4 files changed, 11 insertions(+), 22 deletions(-) diff --git a/[refs] b/[refs] index 61c2e3960a64..1a6b7f25fb2b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5b1a960d180e9660a87b0c661a754efabc1b1d3a +refs/heads/master: a4534560815ffc525bfbe465a290ce048aab4c01 diff --git a/trunk/drivers/pci/hotplug/shpchp.h b/trunk/drivers/pci/hotplug/shpchp.h index c0be7a1c3ff7..f6d606dde691 100644 --- a/trunk/drivers/pci/hotplug/shpchp.h +++ b/trunk/drivers/pci/hotplug/shpchp.h @@ -78,7 +78,7 @@ struct event_info { }; struct controller { - struct controller *next; + struct list_head ctrl_list; struct mutex crit_sect; /* critical section mutex */ struct php_ctlr_state_s *hpc_ctlr_handle; /* HPC controller handle */ int num_slots; /* Number of slots on ctlr */ @@ -204,7 +204,7 @@ extern void shpchp_remove_ctrl_files(struct controller *ctrl); /* Global variables */ -extern struct controller *shpchp_ctrl_list; +extern struct list_head shpchp_ctrl_list; struct ctrl_reg { volatile u32 base_offset; diff --git a/trunk/drivers/pci/hotplug/shpchp_core.c b/trunk/drivers/pci/hotplug/shpchp_core.c index 547bf5d6fcca..0dd0642e691b 100644 --- a/trunk/drivers/pci/hotplug/shpchp_core.c +++ b/trunk/drivers/pci/hotplug/shpchp_core.c @@ -38,7 +38,7 @@ int shpchp_debug; int shpchp_poll_mode; int shpchp_poll_time; -struct controller *shpchp_ctrl_list; /* = NULL */ +LIST_HEAD(shpchp_ctrl_list); #define DRIVER_VERSION "0.4" #define DRIVER_AUTHOR "Dan Zink , Greg Kroah-Hartman , Dely Sy " @@ -452,13 +452,7 @@ static int shpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent) /* Finish setting up the hot plug ctrl device */ ctrl->next_event = 0; - if (!shpchp_ctrl_list) { - shpchp_ctrl_list = ctrl; - ctrl->next = NULL; - } else { - ctrl->next = shpchp_ctrl_list; - shpchp_ctrl_list = ctrl; - } + list_add(&ctrl->ctrl_list, &shpchp_ctrl_list); shpchp_create_ctrl_files(ctrl); @@ -493,22 +487,17 @@ static int shpc_start_thread(void) static void __exit unload_shpchpd(void) { + struct list_head *tmp; + struct list_head *next; struct controller *ctrl; - struct controller *tctrl; - - ctrl = shpchp_ctrl_list; - while (ctrl) { + list_for_each_safe(tmp, next, &shpchp_ctrl_list) { + ctrl = list_entry(tmp, struct controller, ctrl_list); shpchp_remove_ctrl_files(ctrl); cleanup_slots(ctrl); - kfree (ctrl->pci_bus); ctrl->hpc_ops->release_ctlr(ctrl); - - tctrl = ctrl; - ctrl = ctrl->next; - - kfree(tctrl); + kfree(ctrl); } /* Stop the notification mechanism */ diff --git a/trunk/drivers/pci/hotplug/shpchp_ctrl.c b/trunk/drivers/pci/hotplug/shpchp_ctrl.c index 65e69252e2f9..3a8e733aead5 100644 --- a/trunk/drivers/pci/hotplug/shpchp_ctrl.c +++ b/trunk/drivers/pci/hotplug/shpchp_ctrl.c @@ -688,7 +688,7 @@ static int event_thread(void* data) if (pushbutton_pending) shpchp_pushbutton_thread(pushbutton_pending); else - for (ctrl = shpchp_ctrl_list; ctrl; ctrl=ctrl->next) + list_for_each_entry(ctrl, &shpchp_ctrl_list, ctrl_list) interrupt_event_handler(ctrl); } dbg("event_thread signals exit\n");