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