|
@@ -1551,11 +1551,10 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
|
|
|
|
|
|
/* Clear old maps */
|
|
|
error = -ENOMEM;
|
|
|
-munmap_back:
|
|
|
- if (find_vma_links(mm, addr, addr + len, &prev, &rb_link, &rb_parent)) {
|
|
|
+ while (find_vma_links(mm, addr, addr + len, &prev, &rb_link,
|
|
|
+ &rb_parent)) {
|
|
|
if (do_munmap(mm, addr, len))
|
|
|
return -ENOMEM;
|
|
|
- goto munmap_back;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -1571,7 +1570,8 @@ munmap_back:
|
|
|
/*
|
|
|
* Can we just expand an old mapping?
|
|
|
*/
|
|
|
- vma = vma_merge(mm, prev, addr, addr + len, vm_flags, NULL, file, pgoff, NULL);
|
|
|
+ vma = vma_merge(mm, prev, addr, addr + len, vm_flags, NULL, file, pgoff,
|
|
|
+ NULL);
|
|
|
if (vma)
|
|
|
goto out;
|
|
|
|
|
@@ -2739,11 +2739,10 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
|
|
|
/*
|
|
|
* Clear old maps. this also does some error checking for us
|
|
|
*/
|
|
|
- munmap_back:
|
|
|
- if (find_vma_links(mm, addr, addr + len, &prev, &rb_link, &rb_parent)) {
|
|
|
+ while (find_vma_links(mm, addr, addr + len, &prev, &rb_link,
|
|
|
+ &rb_parent)) {
|
|
|
if (do_munmap(mm, addr, len))
|
|
|
return -ENOMEM;
|
|
|
- goto munmap_back;
|
|
|
}
|
|
|
|
|
|
/* Check against address space limits *after* clearing old maps... */
|