diff options
| author | David Woodhouse <David.Woodhouse@intel.com> | 2008-07-11 14:36:25 +0100 | 
|---|---|---|
| committer | David Woodhouse <David.Woodhouse@intel.com> | 2008-07-11 14:36:25 +0100 | 
| commit | a8931ef380c92d121ae74ecfb03b2d63f72eea6f (patch) | |
| tree | 980fb6b019e11e6cb1ece55b7faff184721a8053 /arch/mips/kernel/irixelf.c | |
| parent | 90574d0a4d4b73308ae54a2a57a4f3f1fa98e984 (diff) | |
| parent | e5a5816f7875207cb0a0a7032e39a4686c5e10a4 (diff) | |
| download | olio-linux-3.10-a8931ef380c92d121ae74ecfb03b2d63f72eea6f.tar.xz olio-linux-3.10-a8931ef380c92d121ae74ecfb03b2d63f72eea6f.zip  | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'arch/mips/kernel/irixelf.c')
| -rw-r--r-- | arch/mips/kernel/irixelf.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/mips/kernel/irixelf.c b/arch/mips/kernel/irixelf.c index 290d8e3a664..469c7237e5b 100644 --- a/arch/mips/kernel/irixelf.c +++ b/arch/mips/kernel/irixelf.c @@ -578,7 +578,7 @@ static inline int map_interpreter(struct elf_phdr *epp, struct elfhdr *ihp,   * process and the system, here we map the page and fill the   * structure   */ -static void irix_map_prda_page(void) +static int irix_map_prda_page(void)  {  	unsigned long v;  	struct prda *pp; @@ -587,8 +587,8 @@ static void irix_map_prda_page(void)  	v =  do_brk(PRDA_ADDRESS, PAGE_SIZE);  	up_write(¤t->mm->mmap_sem); -	if (v < 0) -		return; +	if (v != PRDA_ADDRESS) +		return v;		/* v must be an error code */  	pp = (struct prda *) v;  	pp->prda_sys.t_pid  = task_pid_vnr(current); @@ -596,6 +596,8 @@ static void irix_map_prda_page(void)  	pp->prda_sys.t_rpid = task_pid_vnr(current);  	/* We leave the rest set to zero */ + +	return 0;  } @@ -781,7 +783,8 @@ static int load_irix_binary(struct linux_binprm * bprm, struct pt_regs * regs)  	 * IRIX maps a page at 0x200000 which holds some system  	 * information.  Programs depend on this.  	 */ -	irix_map_prda_page(); +	if (irix_map_prda_page()) +		goto out_free_dentry;  	padzero(elf_bss);  |