* Detach a range of VMAs from the mm. Using next as a temp variable as
* it is always overwritten.
*/
- mas_lock(&mas_detach);
mas_for_each(mas, next, end - 1) {
/* Does it split the end? */
if (next->vm_end > end) {
BUG_ON(next->vm_start < start);
BUG_ON(next->vm_start > end);
#endif
+ mas_lock(&mas_detach);
vma_mas_store(next, &mas_detach);
+ mas_unlock(&mas_detach);
if (next->vm_flags & VM_LOCKED) {
mm->locked_vm -= vma_pages(next);
munlock_vma_pages_all(next);
}
}
- mas_unlock(&mas_detach);
mas_set(mas, end);
next = mas_find(mas, ULONG_MAX);