X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=mm%2Fmmap.c;h=2ec8eb5a9cdd0b4ae2e20471858bd4e09d83af00;hb=07675f484bb9de0c4bd0722e174cb27043dbacef;hp=753f44d17047d80ff1b1cb64e9d53d09fd054cb4;hpb=b15d00b6af617251cc70a908df983e9aff57e169;p=linux-2.6-block.git diff --git a/mm/mmap.c b/mm/mmap.c index 753f44d17047..2ec8eb5a9cdd 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -254,7 +254,15 @@ SYSCALL_DEFINE1(brk, unsigned long, brk) down_write(&mm->mmap_sem); #ifdef CONFIG_COMPAT_BRK - min_brk = mm->end_code; + /* + * CONFIG_COMPAT_BRK can still be overridden by setting + * randomize_va_space to 2, which will still cause mm->start_brk + * to be arbitrarily shifted + */ + if (mm->start_brk > PAGE_ALIGN(mm->end_data)) + min_brk = mm->start_brk; + else + min_brk = mm->end_data; #else min_brk = mm->start_brk; #endif @@ -589,6 +597,8 @@ again: remove_next = 1 + (end > next->vm_end); } } + vma_adjust_trans_huge(vma, start, end, adjust_next); + /* * When changing only vma->vm_end, we don't really need anon_vma * lock. This is a fairly rare case by itself, but the anon_vma