View | Details | Raw Unified | Return to bug 64493
Collapse All | Expand All

(-)a/fs/binfmt_aout.c (-5 / +14 lines)
Lines 43-55 Link Here
43
	.min_coredump	= PAGE_SIZE
43
	.min_coredump	= PAGE_SIZE
44
};
44
};
45
45
46
static void set_brk(unsigned long start, unsigned long end)
46
#define BAD_ADDR(x)	((unsigned long)(x) >= TASK_SIZE)
47
48
static int set_brk(unsigned long start, unsigned long end)
47
{
49
{
48
	start = PAGE_ALIGN(start);
50
	start = PAGE_ALIGN(start);
49
	end = PAGE_ALIGN(end);
51
	end = PAGE_ALIGN(end);
50
	if (end <= start)
52
	if (end > start) {
51
		return;
53
		unsigned long addr = do_brk(start, end - start);
52
	do_brk(start, end - start);
54
		if (BAD_ADDR(addr))
55
			return addr;
56
	}
57
	return 0;
53
}
58
}
54
59
55
/*
60
/*
Lines 413-419 Link Here
413
beyond_if:
418
beyond_if:
414
	set_binfmt(&aout_format);
419
	set_binfmt(&aout_format);
415
420
416
	set_brk(current->mm->start_brk, current->mm->brk);
421
	retval = set_brk(current->mm->start_brk, current->mm->brk);
422
	if (retval < 0) {
423
		send_sig(SIGKILL, current, 0);
424
		return retval;
425
	}
417
426
418
	retval = setup_arg_pages(bprm, EXSTACK_DEFAULT);
427
	retval = setup_arg_pages(bprm, EXSTACK_DEFAULT);
419
	if (retval < 0) { 
428
	if (retval < 0) { 

Return to bug 64493