X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=mm%2Fhighmem.c;h=b36b83b920ffe862f0d7060e29687c9bb998a0d8;hb=13723d00e374c2a6d6ccb5af6de965e89c3e1b01;hp=7da4a7b6af11f1d359af60568b312838f8fa2802;hpb=6f58d79598c184dc4f18ceddfaa5fa7483bce0a5;p=~andy%2Flinux diff --git a/mm/highmem.c b/mm/highmem.c index 7da4a7b6af1..b36b83b920f 100644 --- a/mm/highmem.c +++ b/mm/highmem.c @@ -40,6 +40,7 @@ #ifdef CONFIG_HIGHMEM unsigned long totalhigh_pages __read_mostly; +EXPORT_SYMBOL(totalhigh_pages); unsigned int nr_free_highpages (void) { @@ -69,6 +70,7 @@ static DECLARE_WAIT_QUEUE_HEAD(pkmap_map_wait); static void flush_all_zero_pkmaps(void) { int i; + int need_flush = 0; flush_cache_kmaps(); @@ -100,8 +102,10 @@ static void flush_all_zero_pkmaps(void) &pkmap_page_table[i]); set_page_address(page, NULL); + need_flush = 1; } - flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP)); + if (need_flush) + flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP)); } /**