diff options
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 290d8e3a664d..469c7237e5ba 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, | |||
| 578 | * process and the system, here we map the page and fill the | 578 | * process and the system, here we map the page and fill the |
| 579 | * structure | 579 | * structure |
| 580 | */ | 580 | */ |
| 581 | static void irix_map_prda_page(void) | 581 | static int irix_map_prda_page(void) |
| 582 | { | 582 | { |
| 583 | unsigned long v; | 583 | unsigned long v; |
| 584 | struct prda *pp; | 584 | struct prda *pp; |
| @@ -587,8 +587,8 @@ static void irix_map_prda_page(void) | |||
| 587 | v = do_brk(PRDA_ADDRESS, PAGE_SIZE); | 587 | v = do_brk(PRDA_ADDRESS, PAGE_SIZE); |
| 588 | up_write(¤t->mm->mmap_sem); | 588 | up_write(¤t->mm->mmap_sem); |
| 589 | 589 | ||
| 590 | if (v < 0) | 590 | if (v != PRDA_ADDRESS) |
| 591 | return; | 591 | return v; /* v must be an error code */ |
| 592 | 592 | ||
| 593 | pp = (struct prda *) v; | 593 | pp = (struct prda *) v; |
| 594 | pp->prda_sys.t_pid = task_pid_vnr(current); | 594 | pp->prda_sys.t_pid = task_pid_vnr(current); |
| @@ -596,6 +596,8 @@ static void irix_map_prda_page(void) | |||
| 596 | pp->prda_sys.t_rpid = task_pid_vnr(current); | 596 | pp->prda_sys.t_rpid = task_pid_vnr(current); |
| 597 | 597 | ||
| 598 | /* We leave the rest set to zero */ | 598 | /* We leave the rest set to zero */ |
| 599 | |||
| 600 | return 0; | ||
| 599 | } | 601 | } |
| 600 | 602 | ||
| 601 | 603 | ||
| @@ -781,7 +783,8 @@ static int load_irix_binary(struct linux_binprm * bprm, struct pt_regs * regs) | |||
| 781 | * IRIX maps a page at 0x200000 which holds some system | 783 | * IRIX maps a page at 0x200000 which holds some system |
| 782 | * information. Programs depend on this. | 784 | * information. Programs depend on this. |
| 783 | */ | 785 | */ |
| 784 | irix_map_prda_page(); | 786 | if (irix_map_prda_page()) |
| 787 | goto out_free_dentry; | ||
| 785 | 788 | ||
| 786 | padzero(elf_bss); | 789 | padzero(elf_bss); |
| 787 | 790 | ||
