X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=mm%2Fswap.c;h=d3cb966fe9920734f9c97a1fb27cdda36829f493;hb=09abbcffb3ee63fb8712c008df0c6878860777b7;hp=d9a3770d8f3cf879cc53e7cc16fd3a60d3eb600b;hpb=8d1413b28033c49c7f1a4d320e815d7a5531acee;p=linux-2.6-omap-h63xx.git diff --git a/mm/swap.c b/mm/swap.c index d9a3770d8f3..d3cb966fe99 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -55,11 +55,11 @@ static void fastcall __page_cache_release(struct page *page) static void put_compound_page(struct page *page) { - page = (struct page *)page_private(page); + page = compound_head(page); if (put_page_testzero(page)) { - void (*dtor)(struct page *page); + compound_page_dtor *dtor; - dtor = (void (*)(struct page *))page[1].lru.next; + dtor = get_compound_page_dtor(page); (*dtor)(page); } } @@ -488,7 +488,7 @@ static int cpu_swap_callback(struct notifier_block *nfb, long *committed; committed = &per_cpu(committed_space, (long)hcpu); - if (action == CPU_DEAD) { + if (action == CPU_DEAD || action == CPU_DEAD_FROZEN) { atomic_add(*committed, &vm_committed_space); *committed = 0; __lru_add_drain((long)hcpu); @@ -514,5 +514,7 @@ void __init swap_setup(void) * Right now other parts of the system means that we * _really_ don't want to cluster much more */ +#ifdef CONFIG_HOTPLUG_CPU hotcpu_notifier(cpu_swap_callback, 0); +#endif }