diff options
| -rw-r--r-- | arch/x86/vdso/vdso32-setup.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c index 791c1cb822c6..00348980a3a6 100644 --- a/arch/x86/vdso/vdso32-setup.c +++ b/arch/x86/vdso/vdso32-setup.c | |||
| @@ -165,12 +165,14 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
| 165 | 165 | ||
| 166 | down_write(&mm->mmap_sem); | 166 | down_write(&mm->mmap_sem); |
| 167 | 167 | ||
| 168 | addr = get_unmapped_area(NULL, 0, PAGE_SIZE, 0, 0); | 168 | addr = get_unmapped_area(NULL, 0, vdso32_size + VDSO_OFFSET(VDSO_PREV_PAGES), 0, 0); |
| 169 | if (IS_ERR_VALUE(addr)) { | 169 | if (IS_ERR_VALUE(addr)) { |
| 170 | ret = addr; | 170 | ret = addr; |
| 171 | goto up_fail; | 171 | goto up_fail; |
| 172 | } | 172 | } |
| 173 | 173 | ||
| 174 | addr += VDSO_OFFSET(VDSO_PREV_PAGES); | ||
| 175 | |||
| 174 | current->mm->context.vdso = (void *)addr; | 176 | current->mm->context.vdso = (void *)addr; |
| 175 | 177 | ||
| 176 | /* | 178 | /* |
