diff options
Diffstat (limited to 'arch/x86/vdso/vma.c')
| -rw-r--r-- | arch/x86/vdso/vma.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c index 7133cdf9098..21e1aeb9f3e 100644 --- a/arch/x86/vdso/vma.c +++ b/arch/x86/vdso/vma.c @@ -8,6 +8,7 @@  #include <linux/sched.h>  #include <linux/init.h>  #include <linux/random.h> +#include <linux/elf.h>  #include <asm/vsyscall.h>  #include <asm/vgtod.h>  #include <asm/proto.h> @@ -115,15 +116,18 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)  		goto up_fail;  	} +	current->mm->context.vdso = (void *)addr; +  	ret = install_special_mapping(mm, addr, vdso_size,  				      VM_READ|VM_EXEC|  				      VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|  				      VM_ALWAYSDUMP,  				      vdso_pages); -	if (ret) +	if (ret) { +		current->mm->context.vdso = NULL;  		goto up_fail; +	} -	current->mm->context.vdso = (void *)addr;  up_fail:  	up_write(&mm->mmap_sem);  	return ret;  |