PCI: data structure agnostic free list function
[pandora-kernel.git] / drivers / pci / setup-bus.c
index 2121215..bcf5752 100644 (file)
@@ -36,6 +36,16 @@ struct resource_list_x {
        unsigned long flags;
 };
 
+#define free_list(type, head) do {                      \
+       struct type *list, *tmp;                        \
+       for (list = (head)->next; list;) {              \
+               tmp = list;                             \
+               list = list->next;                      \
+               kfree(tmp);                             \
+       }                                               \
+       (head)->next = NULL;                            \
+} while (0)
+
 static void add_to_failed_list(struct resource_list_x *head,
                                 struct pci_dev *dev, struct resource *res)
 {
@@ -58,19 +68,6 @@ static void add_to_failed_list(struct resource_list_x *head,
        list->next = tmp;
 }
 
-static void free_failed_list(struct resource_list_x *head)
-{
-       struct resource_list_x *list, *tmp;
-
-       for (list = head->next; list;) {
-               tmp = list;
-               list = list->next;
-               kfree(tmp);
-       }
-
-       head->next = NULL;
-}
-
 static void __dev_sort_resources(struct pci_dev *dev,
                                 struct resource_list *head)
 {
@@ -900,7 +897,7 @@ again:
 
        if (tried_times >= 2) {
                /* still fail, don't need to try more */
-               free_failed_list(&head);
+               free_list(resource_list_x, &head);
                goto enable_all;
        }
 
@@ -931,7 +928,7 @@ again:
 
                list = list->next;
        }
-       free_failed_list(&head);
+       free_list(resource_list_x, &head);
 
        goto again;