cregit-Linux how code gets into the kernel

Release 4.14 arch/x86/entry/vdso/vdso32-setup.c

// SPDX-License-Identifier: GPL-2.0
/*
 * (C) Copyright 2002 Linus Torvalds
 * Portions based on the vdso-randomization code from exec-shield:
 * Copyright(C) 2005-2006, Red Hat, Inc., Ingo Molnar
 *
 * This file contains the needed initializations to support sysenter.
 */

#include <linux/init.h>
#include <linux/smp.h>
#include <linux/kernel.h>
#include <linux/mm_types.h>

#include <asm/processor.h>
#include <asm/vdso.h>

#ifdef CONFIG_COMPAT_VDSO

#define VDSO_DEFAULT	0
#else

#define VDSO_DEFAULT	1
#endif

/*
 * Should the kernel map a VDSO page into processes and pass its
 * address down to glibc upon exec()?
 */

unsigned int __read_mostly vdso32_enabled = VDSO_DEFAULT;


static int __init vdso32_setup(char *s) { vdso32_enabled = simple_strtoul(s, NULL, 0); if (vdso32_enabled > 1) { pr_warn("vdso32 values other than 0 and 1 are no longer allowed; vdso disabled\n"); vdso32_enabled = 0; } return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Ingo Molnar2354.76%125.00%
Andrew Lutomirski1330.95%250.00%
Mathias Krause614.29%125.00%
Total42100.00%4100.00%

/* * For consistency, the argument vdso32=[012] affects the 32-bit vDSO * behavior on both 64-bit and 32-bit kernels. * On 32-bit kernels, vdso=[012] means the same thing. */ __setup("vdso32=", vdso32_setup); #ifdef CONFIG_X86_32 __setup_param("vdso=", vdso_setup, vdso32_setup, 0); #endif
int __init sysenter_setup(void) { init_vdso_image(&vdso_image_32); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds1058.82%116.67%
Andrew Lutomirski423.53%350.00%
Jeremy Fitzhardinge317.65%233.33%
Total17100.00%6100.00%

#ifdef CONFIG_X86_64 subsys_initcall(sysenter_setup); #ifdef CONFIG_SYSCTL /* Register vsyscall32 into the ABI table */ #include <linux/sysctl.h> static const int zero; static const int one = 1; static struct ctl_table abi_table2[] = { { .procname = "vsyscall32", .data = &vdso32_enabled, .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec_minmax, .extra1 = (int *)&zero, .extra2 = (int *)&one, }, {} }; static struct ctl_table abi_root_table2[] = { { .procname = "abi", .mode = 0555, .child = abi_table2 }, {} };
static __init int ia32_binfmt_init(void) { register_sysctl_table(abi_root_table2); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Roland McGrath17100.00%1100.00%
Total17100.00%1100.00%

__initcall(ia32_binfmt_init); #endif /* CONFIG_SYSCTL */ #endif /* CONFIG_X86_64 */

Overall Contributors

PersonTokensPropCommitsCommitProp
Roland McGrath12144.98%313.64%
Mathias Krause4014.87%14.55%
Ingo Molnar3513.01%14.55%
Andrew Lutomirski2810.41%731.82%
Linus Torvalds207.43%14.55%
Jeremy Fitzhardinge145.20%313.64%
Andi Kleen41.49%14.55%
Stefani Seibold20.74%14.55%
Joe Perches20.74%14.55%
Jiri Slaby10.37%14.55%
Greg Kroah-Hartman10.37%14.55%
Dave Jones10.37%14.55%
Total269100.00%22100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.