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 | /* |