]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/mmap: Fix brk logic when there is no vma for brk maple3
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Fri, 29 Jan 2021 15:45:27 +0000 (10:45 -0500)
committerLiam R. Howlett <Liam.Howlett@Oracle.com>
Fri, 29 Jan 2021 15:45:27 +0000 (10:45 -0500)
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
mm/mmap.c

index a327ec3f57a154f5cfde0e6f2aa8d2b01d8ee33b..961d0294110b84328218a9c07efa7f54afe21177 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -268,8 +268,15 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
                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,