View | Details | Raw Unified
Collapse All | Expand All

(-) 1.25/fs/binfmt_aout.c (-5 / +21 lines)
 Lines 413-418    Link Here 
	down_write(&mm->mmap_sem);
	down_write(&mm->mmap_sem);
	{
	{
		struct vm_area_struct *vma;
		mpnt->vm_mm = mm;
		mpnt->vm_mm = mm;
#ifdef CONFIG_STACK_GROWSUP
#ifdef CONFIG_STACK_GROWSUP
		mpnt->vm_start = stack_base;
		mpnt->vm_start = stack_base;
 Lines 433-438    Link Here 
			mpnt->vm_flags = VM_STACK_FLAGS;
			mpnt->vm_flags = VM_STACK_FLAGS;
		mpnt->vm_flags |= mm->def_flags;
		mpnt->vm_flags |= mm->def_flags;
		mpnt->vm_page_prot = protection_map[mpnt->vm_flags & 0x7];
		mpnt->vm_page_prot = protection_map[mpnt->vm_flags & 0x7];
		vma = find_vma(mm, mpnt->vm_start);
		if (vma) {
			up_write(&mm->mmap_sem);
			kmem_cache_free(vm_area_cachep, mpnt);
			return -ENOMEM;
		}
		insert_vm_struct(mm, mpnt);
		insert_vm_struct(mm, mpnt);
		mm->stack_vm = mm->total_vm = vma_pages(mpnt);
		mm->stack_vm = mm->total_vm = vma_pages(mpnt);
	}
	}
 Lines 43-55    Link Here 
	.min_coredump	= PAGE_SIZE
	.min_coredump	= PAGE_SIZE
};
};
static void set_brk(unsigned long start, unsigned long end)
#define BAD_ADDR(x)	((unsigned long)(x) >= TASK_SIZE)
static int set_brk(unsigned long start, unsigned long end)
{
{
	start = PAGE_ALIGN(start);
	start = PAGE_ALIGN(start);
	end = PAGE_ALIGN(end);
	end = PAGE_ALIGN(end);
	if (end <= start)
	if (end > start) {
		return;
		unsigned long addr = do_brk(start, end - start);
	do_brk(start, end - start);
		if (BAD_ADDR(addr))
			return addr;
	}
	return 0;
}
}
/*
/*
 Lines 413-419    Link Here 
beyond_if:
beyond_if:
	set_binfmt(&aout_format);
	set_binfmt(&aout_format);
	set_brk(current->mm->start_brk, current->mm->brk);
	retval = set_brk(current->mm->start_brk, current->mm->brk);
	if (retval < 0) {
		send_sig(SIGKILL, current, 0);
		return retval;
	}
	retval = setup_arg_pages(bprm, EXSTACK_DEFAULT);
	retval = setup_arg_pages(bprm, EXSTACK_DEFAULT);
	if (retval < 0) { 
	if (retval < 0) {