Commit 094732a5 authored by Ram Pai's avatar Ram Pai Committed by Jesse Barnes

PCI: data structure agnostic free list function

Replace free_failed_list() with a free_list() call. free_list() can
handle 'resource_list_x', 'resource_list' and any linked list linked
through ->next
Signed-off-by: default avatarRam Pai <linuxram@us.ibm.com>
Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
parent 13583b16
......@@ -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 @@ void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge)
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 @@ void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge)
list = list->next;
}
free_failed_list(&head);
free_list(resource_list_x, &head);
goto again;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment