Comments
Patch
===================================================================
@@ -339,7 +339,7 @@ struct resource *probe_resource(device_t
*/
struct resource *new_resource(device_t dev, unsigned index)
{
- struct resource *resource;
+ struct resource *resource, *tail;
/* First move all of the free resources to the end */
compact_resources(dev);
@@ -353,8 +353,14 @@ struct resource *new_resource(device_t d
resource = free_resources;
free_resources = free_resources->next;
memset(resource, 0, sizeof(*resource));
- resource->next = dev->resource_list;
- dev->resource_list = resource;
+ resource->next = NULL;
+ tail = dev->resource_list;
+ if (tail) {
+ while (tail->next) tail = tail->next;
+ tail->next = resource;
+ }
+ else
+ dev->resource_list = resource;
}
/* Initialize the resource values */
if (!(resource->flags & IORESOURCE_FIXED)) {