From: Liam R. Howlett Date: Fri, 29 Jan 2021 15:45:27 +0000 (-0500) Subject: mm/mmap: Fix brk logic when there is no vma for brk X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=03f36830923fdcd2003eddeb7c8dfca2bde28544;p=users%2Fjedix%2Flinux-maple.git mm/mmap: Fix brk logic when there is no vma for brk Signed-off-by: Liam R. Howlett --- diff --git a/mm/mmap.c b/mm/mmap.c index a327ec3f57a1..961d0294110b 100644 --- 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,