diff options
Diffstat (limited to 'arch/x86/vdso/vma.c')
-rw-r--r-- | arch/x86/vdso/vma.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c index 7133cdf9098b..93b7a2938b2f 100644 --- a/arch/x86/vdso/vma.c +++ b/arch/x86/vdso/vma.c | |||
@@ -115,15 +115,18 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
115 | goto up_fail; | 115 | goto up_fail; |
116 | } | 116 | } |
117 | 117 | ||
118 | current->mm->context.vdso = (void *)addr; | ||
119 | |||
118 | ret = install_special_mapping(mm, addr, vdso_size, | 120 | ret = install_special_mapping(mm, addr, vdso_size, |
119 | VM_READ|VM_EXEC| | 121 | VM_READ|VM_EXEC| |
120 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| | 122 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| |
121 | VM_ALWAYSDUMP, | 123 | VM_ALWAYSDUMP, |
122 | vdso_pages); | 124 | vdso_pages); |
123 | if (ret) | 125 | if (ret) { |
126 | current->mm->context.vdso = NULL; | ||
124 | goto up_fail; | 127 | goto up_fail; |
128 | } | ||
125 | 129 | ||
126 | current->mm->context.vdso = (void *)addr; | ||
127 | up_fail: | 130 | up_fail: |
128 | up_write(&mm->mmap_sem); | 131 | up_write(&mm->mmap_sem); |
129 | return ret; | 132 | return ret; |