View | Details | Raw Unified
Collapse All | Expand All

(-) linux-2.4.28/fs/exec.c (+7 lines)
 Lines 342-347   int setup_arg_pages(struct linux_binprm Link Here 
	
	
	down_write(&current->mm->mmap_sem);
	down_write(&current->mm->mmap_sem);
	{
	{
		struct vm_area_struct *vma;
		mpnt->vm_mm = current->mm;
		mpnt->vm_mm = current->mm;
		mpnt->vm_start = PAGE_MASK & (unsigned long) bprm->p;
		mpnt->vm_start = PAGE_MASK & (unsigned long) bprm->p;
		mpnt->vm_end = STACK_TOP;
		mpnt->vm_end = STACK_TOP;
 Lines 351-356   int setup_arg_pages(struct linux_binprm Link Here 
		mpnt->vm_pgoff = 0;
		mpnt->vm_pgoff = 0;
		mpnt->vm_file = NULL;
		mpnt->vm_file = NULL;
		mpnt->vm_private_data = (void *) 0;
		mpnt->vm_private_data = (void *) 0;
		vma = find_vma(current->mm, mpnt->vm_start);
		if (vma) {
			up_write(&current->mm->mmap_sem);
			kmem_cache_free(vm_area_cachep, mpnt);
			return -ENOMEM;
		}
		insert_vm_struct(current->mm, mpnt);
		insert_vm_struct(current->mm, mpnt);
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
	} 
	} 
(-) linux-2.4.28/fs/binfmt_aout.c (-5 / +14 lines)
 Lines 39-51   static struct linux_binfmt aout_format = Link Here 
	NULL, THIS_MODULE, load_aout_binary, load_aout_library, aout_core_dump, PAGE_SIZE
	NULL, THIS_MODULE, load_aout_binary, load_aout_library, aout_core_dump, 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 405-411   static int load_aout_binary(struct linux 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); 
	retval = setup_arg_pages(bprm); 
	if (retval < 0) { 
	if (retval < 0) {