diff options
Diffstat (limited to 'arch/um/os-Linux/elf_aux.c')
-rw-r--r-- | arch/um/os-Linux/elf_aux.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/um/os-Linux/elf_aux.c b/arch/um/os-Linux/elf_aux.c index f0d6060e3e57..9416e1c29926 100644 --- a/arch/um/os-Linux/elf_aux.c +++ b/arch/um/os-Linux/elf_aux.c | |||
@@ -9,8 +9,10 @@ | |||
9 | */ | 9 | */ |
10 | #include <elf.h> | 10 | #include <elf.h> |
11 | #include <stddef.h> | 11 | #include <stddef.h> |
12 | #include <asm/elf.h> | ||
12 | #include "init.h" | 13 | #include "init.h" |
13 | #include "elf_user.h" | 14 | #include "elf_user.h" |
15 | #include "mem_user.h" | ||
14 | 16 | ||
15 | #if ELF_CLASS == ELFCLASS32 | 17 | #if ELF_CLASS == ELFCLASS32 |
16 | typedef Elf32_auxv_t elf_auxv_t; | 18 | typedef Elf32_auxv_t elf_auxv_t; |
@@ -40,6 +42,9 @@ __init void scan_elf_aux( char **envp) | |||
40 | break; | 42 | break; |
41 | case AT_SYSINFO_EHDR: | 43 | case AT_SYSINFO_EHDR: |
42 | vsyscall_ehdr = auxv->a_un.a_val; | 44 | vsyscall_ehdr = auxv->a_un.a_val; |
45 | /* See if the page is under TASK_SIZE */ | ||
46 | if (vsyscall_ehdr < (unsigned long) envp) | ||
47 | vsyscall_ehdr = 0; | ||
43 | break; | 48 | break; |
44 | case AT_HWCAP: | 49 | case AT_HWCAP: |
45 | elf_aux_hwcap = auxv->a_un.a_val; | 50 | elf_aux_hwcap = auxv->a_un.a_val; |