x86-64: Rework vsyscall emulation and add vsyscall= parameter
authorAndy Lutomirski <luto@mit.edu>
Wed, 10 Aug 2011 15:15:32 +0000 (11:15 -0400)
committerH. Peter Anvin <hpa@linux.intel.com>
Thu, 11 Aug 2011 00:26:46 +0000 (19:26 -0500)
commit3ae36655b97a03fa1decf72f04078ef945647c1a
treef6f5fbc743909d66e6823c9325ddba9d9d3646ad
parentfce8dc06423d6fb2709469dc5c55b04e09c1d126
x86-64: Rework vsyscall emulation and add vsyscall= parameter

There are three choices:

vsyscall=native: Vsyscalls are native code that issues the
corresponding syscalls.

vsyscall=emulate (default): Vsyscalls are emulated by instruction
fault traps, tested in the bad_area path.  The actual contents of
the vsyscall page is the same as the vsyscall=native case except
that it's marked NX.  This way programs that make assumptions about
what the code in the page does will not be confused when they read
that code.

vsyscall=none: Trying to execute a vsyscall will segfault.

Signed-off-by: Andy Lutomirski <luto@mit.edu>
Link: http://lkml.kernel.org/r/8449fb3abf89851fd6b2260972666a6f82542284.1312988155.git.luto@mit.edu
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Documentation/kernel-parameters.txt
arch/x86/include/asm/irq_vectors.h
arch/x86/include/asm/traps.h
arch/x86/include/asm/vsyscall.h
arch/x86/kernel/entry_64.S
arch/x86/kernel/traps.c
arch/x86/kernel/vmlinux.lds.S
arch/x86/kernel/vsyscall_64.c
arch/x86/kernel/vsyscall_emu_64.S
arch/x86/mm/fault.c