goto out;
brkvma = mas_prev(&ma_neighbour, mm->start_brk);
- if (brkvma && (brkvma->vm_start >= oldbrk))
- goto out; // Trying to map over another vma.
+ if (likely(brkvma)) {
+ if (unlikely(brkvma->vm_start >= oldbrk))
+ goto out; // Trying to map over another vma.
+
+ if (unlikely(brkvma->vm_end <= min_brk)) {
+ brkvma = NULL; // No brk.
+ ma_neighbour = mas;
+ }
+ }
/* Ok, looks good - let it rip. */
if (do_brk_flags(&mas, &ma_neighbour, &brkvma, oldbrk,