When sorting them, put the one with large size before small size. Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx> --- drivers/pci/setup-bus.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index 64d478f..0568f29 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c @@ -128,7 +128,7 @@ static void pdev_sort_resources(struct pci_dev *dev, struct list_head *head) for (i = 0; i < PCI_NUM_RESOURCES; i++) { struct resource *r; struct pci_dev_resource *dev_res, *tmp; - resource_size_t r_align; + resource_size_t r_align, r_size; struct list_head *n; r = &dev->resource[i]; @@ -145,6 +145,7 @@ static void pdev_sort_resources(struct pci_dev *dev, struct list_head *head) i, r); continue; } + r_size = resource_size(r); tmp = kzalloc(sizeof(*tmp), GFP_KERNEL); if (!tmp) @@ -161,7 +162,9 @@ static void pdev_sort_resources(struct pci_dev *dev, struct list_head *head) align = pci_resource_alignment(dev_res->dev, dev_res->res); - if (r_align > align) { + if (r_align > align || + (r_align == align && + r_size > resource_size(dev_res->res))) { n = &dev_res->list; break; } -- 1.7.7 -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html