|
@@ -731,16 +731,6 @@ static struct vmap_area *find_vmap_area(unsigned long addr)
|
|
|
return va;
|
|
|
}
|
|
|
|
|
|
-static void free_unmap_vmap_area_addr(unsigned long addr)
|
|
|
-{
|
|
|
- struct vmap_area *va;
|
|
|
-
|
|
|
- va = find_vmap_area(addr);
|
|
|
- BUG_ON(!va);
|
|
|
- free_unmap_vmap_area(va);
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
/*** Per cpu kva allocator ***/
|
|
|
|
|
|
/*
|
|
@@ -1098,6 +1088,7 @@ void vm_unmap_ram(const void *mem, unsigned int count)
|
|
|
{
|
|
|
unsigned long size = (unsigned long)count << PAGE_SHIFT;
|
|
|
unsigned long addr = (unsigned long)mem;
|
|
|
+ struct vmap_area *va;
|
|
|
|
|
|
BUG_ON(!addr);
|
|
|
BUG_ON(addr < VMALLOC_START);
|
|
@@ -1107,10 +1098,14 @@ void vm_unmap_ram(const void *mem, unsigned int count)
|
|
|
debug_check_no_locks_freed(mem, size);
|
|
|
vmap_debug_free_range(addr, addr+size);
|
|
|
|
|
|
- if (likely(count <= VMAP_MAX_ALLOC))
|
|
|
+ if (likely(count <= VMAP_MAX_ALLOC)) {
|
|
|
vb_free(mem, size);
|
|
|
- else
|
|
|
- free_unmap_vmap_area_addr(addr);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ va = find_vmap_area(addr);
|
|
|
+ BUG_ON(!va);
|
|
|
+ free_unmap_vmap_area(va);
|
|
|
}
|
|
|
EXPORT_SYMBOL(vm_unmap_ram);
|
|
|
|