-/* Setup a VMA at program startup for the vsyscall page */
-int arch_setup_additional_pages(struct linux_binprm *bprm, int exstack,
- unsigned long start_code, unsigned long interp_map_address)
-{
- struct vm_area_struct *vma;
- struct mm_struct *mm = current->mm;
- unsigned long addr;
- int ret;
-
- down_write(&mm->mmap_sem);
- addr = get_unmapped_area_prot(NULL, 0, PAGE_SIZE, 0, 0, 1);
- if (IS_ERR_VALUE(addr)) {
- ret = addr;
- goto up_fail;
+ /*
+ * Map the vDSO (it will be randomized):
+ */
+ down_write(¤t->mm->mmap_sem);
+ len = PAGE_SIZE > ELF_EXEC_PAGESIZE ? PAGE_SIZE : ELF_EXEC_PAGESIZE;
+ if (0==exec_shield) { /* off; %cs limit off */
+ addr = STACK_TOP; /* minimal interference with anybody */
+ flags = MAP_PRIVATE | MAP_FIXED;