diff --git a/mm/vmalloc.c b/mm/vmalloc.c index c85d75406c81..0f551a4a44cd 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -555,8 +555,10 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end, } rcu_read_unlock(); - if (nr) + if (nr) { + BUG_ON(nr > atomic_read(&vmap_lazy_nr)); atomic_sub(nr, &vmap_lazy_nr); + } if (nr || force_flush) flush_tlb_kernel_range(*start, *end);