aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/vdso/vma.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/vdso/vma.c')
-rw-r--r--arch/x86/vdso/vma.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
index 7133cdf9098b..21e1aeb9f3ea 100644
--- a/arch/x86/vdso/vma.c
+++ b/arch/x86/vdso/vma.c
@@ -8,6 +8,7 @@
8#include <linux/sched.h> 8#include <linux/sched.h>
9#include <linux/init.h> 9#include <linux/init.h>
10#include <linux/random.h> 10#include <linux/random.h>
11#include <linux/elf.h>
11#include <asm/vsyscall.h> 12#include <asm/vsyscall.h>
12#include <asm/vgtod.h> 13#include <asm/vgtod.h>
13#include <asm/proto.h> 14#include <asm/proto.h>
@@ -115,15 +116,18 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
115 goto up_fail; 116 goto up_fail;
116 } 117 }
117 118
119 current->mm->context.vdso = (void *)addr;
120
118 ret = install_special_mapping(mm, addr, vdso_size, 121 ret = install_special_mapping(mm, addr, vdso_size,
119 VM_READ|VM_EXEC| 122 VM_READ|VM_EXEC|
120 VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| 123 VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|
121 VM_ALWAYSDUMP, 124 VM_ALWAYSDUMP,
122 vdso_pages); 125 vdso_pages);
123 if (ret) 126 if (ret) {
127 current->mm->context.vdso = NULL;
124 goto up_fail; 128 goto up_fail;
129 }
125 130
126 current->mm->context.vdso = (void *)addr;
127up_fail: 131up_fail:
128 up_write(&mm->mmap_sem); 132 up_write(&mm->mmap_sem);
129 return ret; 133 return ret;