diff options
Diffstat (limited to 'mm/page_alloc.c')
| -rw-r--r-- | mm/page_alloc.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index d77c9046bef2..5418504b0eab 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -137,14 +137,10 @@ static void __free_pages_ok (struct page *page, unsigned int order) return; local_freelist: - /* - * This is a little subtle: if the allocation order - * wanted is major than zero we'd better take all the pages - * local since we must deal with fragmentation too and we - * can't rely on the nr_local_pages information. - */ - if (current->nr_local_pages && !current->allocation_order) + if (current->nr_local_pages) goto back_local_freelist; + if (in_interrupt()) + goto back_local_freelist; list_add(&page->list, ¤t->local_pages); page->index = order; |
