|
@@ -595,7 +595,6 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
|
int load_addr_set = 0;
|
|
int load_addr_set = 0;
|
|
char * elf_interpreter = NULL;
|
|
char * elf_interpreter = NULL;
|
|
unsigned int interpreter_type = INTERPRETER_NONE;
|
|
unsigned int interpreter_type = INTERPRETER_NONE;
|
|
- unsigned char ibcs2_interpreter = 0;
|
|
|
|
unsigned long error;
|
|
unsigned long error;
|
|
struct elf_phdr *elf_ppnt, *elf_phdata;
|
|
struct elf_phdr *elf_ppnt, *elf_phdata;
|
|
unsigned long elf_bss, elf_brk;
|
|
unsigned long elf_bss, elf_brk;
|
|
@@ -713,14 +712,6 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
|
if (elf_interpreter[elf_ppnt->p_filesz - 1] != '\0')
|
|
if (elf_interpreter[elf_ppnt->p_filesz - 1] != '\0')
|
|
goto out_free_interp;
|
|
goto out_free_interp;
|
|
|
|
|
|
- /* If the program interpreter is one of these two,
|
|
|
|
- * then assume an iBCS2 image. Otherwise assume
|
|
|
|
- * a native linux image.
|
|
|
|
- */
|
|
|
|
- if (strcmp(elf_interpreter,"/usr/lib/libc.so.1") == 0 ||
|
|
|
|
- strcmp(elf_interpreter,"/usr/lib/ld.so.1") == 0)
|
|
|
|
- ibcs2_interpreter = 1;
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* The early SET_PERSONALITY here is so that the lookup
|
|
* The early SET_PERSONALITY here is so that the lookup
|
|
* for the interpreter happens in the namespace of the
|
|
* for the interpreter happens in the namespace of the
|
|
@@ -740,7 +731,7 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
|
* switch really is going to happen - do this in
|
|
* switch really is going to happen - do this in
|
|
* flush_thread(). - akpm
|
|
* flush_thread(). - akpm
|
|
*/
|
|
*/
|
|
- SET_PERSONALITY(loc->elf_ex, ibcs2_interpreter);
|
|
|
|
|
|
+ SET_PERSONALITY(loc->elf_ex, 0);
|
|
|
|
|
|
interpreter = open_exec(elf_interpreter);
|
|
interpreter = open_exec(elf_interpreter);
|
|
retval = PTR_ERR(interpreter);
|
|
retval = PTR_ERR(interpreter);
|
|
@@ -819,7 +810,7 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
|
goto out_free_dentry;
|
|
goto out_free_dentry;
|
|
} else {
|
|
} else {
|
|
/* Executables without an interpreter also need a personality */
|
|
/* Executables without an interpreter also need a personality */
|
|
- SET_PERSONALITY(loc->elf_ex, ibcs2_interpreter);
|
|
|
|
|
|
+ SET_PERSONALITY(loc->elf_ex, 0);
|
|
}
|
|
}
|
|
|
|
|
|
/* OK, we are done with that, now set up the arg stuff,
|
|
/* OK, we are done with that, now set up the arg stuff,
|
|
@@ -853,7 +844,7 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
|
|
|
|
|
/* Do this immediately, since STACK_TOP as used in setup_arg_pages
|
|
/* Do this immediately, since STACK_TOP as used in setup_arg_pages
|
|
may depend on the personality. */
|
|
may depend on the personality. */
|
|
- SET_PERSONALITY(loc->elf_ex, ibcs2_interpreter);
|
|
|
|
|
|
+ SET_PERSONALITY(loc->elf_ex, 0);
|
|
if (elf_read_implies_exec(loc->elf_ex, executable_stack))
|
|
if (elf_read_implies_exec(loc->elf_ex, executable_stack))
|
|
current->personality |= READ_IMPLIES_EXEC;
|
|
current->personality |= READ_IMPLIES_EXEC;
|
|
|
|
|