diff options
Diffstat (limited to 'mm/vmalloc.c')
-rw-r--r-- | mm/vmalloc.c | 5 |
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) { |