diff --git a/[refs] b/[refs] index 80f4ca524a4a..86fecad5f89d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: be6200aac985e0a3db56ec636763a32f3e32e7f1 +refs/heads/master: 1b528181b2ffa14721fb28ad1bd539fe1732c583 diff --git a/trunk/fs/exec.c b/trunk/fs/exec.c index 2d9455282744..1b63237fc6dc 100644 --- a/trunk/fs/exec.c +++ b/trunk/fs/exec.c @@ -594,6 +594,11 @@ int setup_arg_pages(struct linux_binprm *bprm, #else stack_top = arch_align_stack(stack_top); stack_top = PAGE_ALIGN(stack_top); + + if (unlikely(stack_top < mmap_min_addr) || + unlikely(vma->vm_end - vma->vm_start >= stack_top - mmap_min_addr)) + return -ENOMEM; + stack_shift = vma->vm_end - stack_top; bprm->p -= stack_shift;