this may be a patch:
[albert@yoda albert]$ diff -ruN page_alloc.c new_page_alloc.c
--- page_alloc.c
+++ new_page_alloc.c
@@ -167,7 +167,7 @@
#define MARK_USED(index, order, area) \
__change_bit((index) >> (1+(order)), (area)->map)
-static inline struct page * expand (zone_t *zone, struct page *page,
+static inline struct page * expand(zone_t *zone, struct page *page,
unsigned long index, int low, int high, free_area_t * area)
{
unsigned long size = 1 << high;
@@ -215,7 +215,6 @@
zone->free_pages -= 1UL << order;
page = expand(zone, page, index, order, curr_order,
area);
- spin_unlock_irqrestore(&zone->lock, flags);
set_page_count(page, 1);
if (BAD_RANGE(zone,page))
@@ -224,6 +223,7 @@
BUG();
if (PageActive(page))
BUG();
+ spin_unlock_irqrestore(&zone->lock, flags);
return page;
}
curr_order++;
__
Emiliano 'AlberT' Gabrielli
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/