summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mm/vmalloc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 666a6085ce83..35b19d43fb6e 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -636,10 +636,11 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end,
atomic_sub(nr, &vmap_lazy_nr);
if (nr || force_flush) {
- if (*end - *start > sysctl_lazy_vfree_tlb_flush_all_threshold)
+ if (nr > (sysctl_lazy_vfree_tlb_flush_all_threshold >> PAGE_SHIFT))
flush_tlb_all();
else
- flush_tlb_kernel_range(*start, *end);
+ list_for_each_entry(va, &valist, purge_list)
+ flush_tlb_kernel_range(va->va_start, va->va_end);
}
if (nr) {