int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) { if (!vdso64_enabled) return 0; return map_vdso(&vdso_image_64, true); }
int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) { if (!vdso_enabled) return 0; #if defined CONFIG_COMPAT if (!(is_32bit_task())) return map_vdso(&vdso_image_64_builtin, &vdso_mapping64); else return map_vdso(&vdso_image_32_builtin, &vdso_mapping32); #else return map_vdso(&vdso_image_64_builtin, &vdso_mapping64); #endif }
int compat_arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) { #ifdef CONFIG_X86_X32_ABI if (test_thread_flag(TIF_X32)) { if (!vdso64_enabled) return 0; return map_vdso(&vdso_image_x32, true); } #endif return load_vdso32(); }
static int load_vdso32(void) { int ret; if (vdso32_enabled != 1) /* Other values all mean "disabled" */ return 0; ret = map_vdso(selected_vdso32, false); if (ret) return ret; if (selected_vdso32->sym_VDSO32_SYSENTER_RETURN) current_thread_info()->sysenter_return = current->mm->context.vdso + selected_vdso32->sym_VDSO32_SYSENTER_RETURN; return 0; }