diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/sn/kernel/io_init.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c index 2e4e56be8df5..3437c2390429 100644 --- a/arch/ia64/sn/kernel/io_init.c +++ b/arch/ia64/sn/kernel/io_init.c | |||
@@ -617,17 +617,15 @@ void sn_bus_store_sysdata(struct pci_dev *dev) | |||
617 | void sn_bus_free_sysdata(void) | 617 | void sn_bus_free_sysdata(void) |
618 | { | 618 | { |
619 | struct sysdata_el *element; | 619 | struct sysdata_el *element; |
620 | struct list_head *list; | 620 | struct list_head *list, *safe; |
621 | 621 | ||
622 | sn_sysdata_free_start: | 622 | list_for_each_safe(list, safe, &sn_sysdata_list) { |
623 | list_for_each(list, &sn_sysdata_list) { | ||
624 | element = list_entry(list, struct sysdata_el, entry); | 623 | element = list_entry(list, struct sysdata_el, entry); |
625 | list_del(&element->entry); | 624 | list_del(&element->entry); |
626 | list_del(&(((struct pcidev_info *) | 625 | list_del(&(((struct pcidev_info *) |
627 | (element->sysdata))->pdi_list)); | 626 | (element->sysdata))->pdi_list)); |
628 | kfree(element->sysdata); | 627 | kfree(element->sysdata); |
629 | kfree(element); | 628 | kfree(element); |
630 | goto sn_sysdata_free_start; | ||
631 | } | 629 | } |
632 | return; | 630 | return; |
633 | } | 631 | } |