aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/Kconfig
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-04-02 15:26:43 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-02 15:26:43 -0400
commitc6f21243ce1e8d81ad8361da4d2eaa5947b667c4 (patch)
tree5157ca1de2e7a5371575fff92ce23f0d09e3e7ea /arch/x86/Kconfig
parent9447dc43941cd1c006cae934984524b7c957b803 (diff)
parent37c975545ec63320789962bf307f000f08fabd48 (diff)
Merge branch 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 vdso changes from Peter Anvin: "This is the revamp of the 32-bit vdso and the associated cleanups. This adds timekeeping support to the 32-bit vdso that we already have in the 64-bit vdso. Although 32-bit x86 is legacy, it is likely to remain in the embedded space for a very long time to come. This removes the traditional COMPAT_VDSO support; the configuration variable is reused for simply removing the 32-bit vdso, which will produce correct results but obviously suffer a performance penalty. Only one beta version of glibc was affected, but that version was unfortunately included in one OpenSUSE release. This is not the end of the vdso cleanups. Stefani and Andy have agreed to continue work for the next kernel cycle; in fact Andy has already produced another set of cleanups that came too late for this cycle. An incidental, but arguably important, change is that this ensures that unused space in the VVAR page is properly zeroed. It wasn't before, and would contain whatever garbage was left in memory by BIOS or the bootloader. Since the VVAR page is accessible to user space this had the potential of information leaks" * 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (23 commits) x86, vdso: Fix the symbol versions on the 32-bit vDSO x86, vdso, build: Don't rebuild 32-bit vdsos on every make x86, vdso: Actually discard the .discard sections x86, vdso: Fix size of get_unmapped_area() x86, vdso: Finish removing VDSO32_PRELINK x86, vdso: Move more vdso definitions into vdso.h x86: Load the 32-bit vdso in place, just like the 64-bit vdsos x86, vdso32: handle 32 bit vDSO larger one page x86, vdso32: Disable stack protector, adjust optimizations x86, vdso: Zero-pad the VVAR page x86, vdso: Add 32 bit VDSO time support for 64 bit kernel x86, vdso: Add 32 bit VDSO time support for 32 bit kernel x86, vdso: Patch alternatives in the 32-bit VDSO x86, vdso: Introduce VVAR marco for vdso32 x86, vdso: Cleanup __vdso_gettimeofday() x86, vdso: Replace VVAR(vsyscall_gtod_data) by gtod macro x86, vdso: __vdso_clock_gettime() cleanup x86, vdso: Revamp vclock_gettime.c mm: Add new func _install_special_mapping() to mmap.c x86, vdso: Make vsyscall_gtod_data handling x86 generic ...
Diffstat (limited to 'arch/x86/Kconfig')
-rw-r--r--arch/x86/Kconfig30
1 files changed, 21 insertions, 9 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 26237934ac87..ac04d9804391 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -107,9 +107,9 @@ config X86
107 select HAVE_ARCH_SOFT_DIRTY 107 select HAVE_ARCH_SOFT_DIRTY
108 select CLOCKSOURCE_WATCHDOG 108 select CLOCKSOURCE_WATCHDOG
109 select GENERIC_CLOCKEVENTS 109 select GENERIC_CLOCKEVENTS
110 select ARCH_CLOCKSOURCE_DATA if X86_64 110 select ARCH_CLOCKSOURCE_DATA
111 select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC) 111 select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC)
112 select GENERIC_TIME_VSYSCALL if X86_64 112 select GENERIC_TIME_VSYSCALL
113 select KTIME_SCALAR if X86_32 113 select KTIME_SCALAR if X86_32
114 select GENERIC_STRNCPY_FROM_USER 114 select GENERIC_STRNCPY_FROM_USER
115 select GENERIC_STRNLEN_USER 115 select GENERIC_STRNLEN_USER
@@ -1848,17 +1848,29 @@ config DEBUG_HOTPLUG_CPU0
1848 If unsure, say N. 1848 If unsure, say N.
1849 1849
1850config COMPAT_VDSO 1850config COMPAT_VDSO
1851 def_bool y 1851 def_bool n
1852 prompt "Compat VDSO support" 1852 prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)"
1853 depends on X86_32 || IA32_EMULATION 1853 depends on X86_32 || IA32_EMULATION
1854 ---help--- 1854 ---help---
1855 Map the 32-bit VDSO to the predictable old-style address too. 1855 Certain buggy versions of glibc will crash if they are
1856 presented with a 32-bit vDSO that is not mapped at the address
1857 indicated in its segment table.
1856 1858
1857 Say N here if you are running a sufficiently recent glibc 1859 The bug was introduced by f866314b89d56845f55e6f365e18b31ec978ec3a
1858 version (2.3.3 or later), to remove the high-mapped 1860 and fixed by 3b3ddb4f7db98ec9e912ccdf54d35df4aa30e04a and
1859 VDSO mapping and to exclusively use the randomized VDSO. 1861 49ad572a70b8aeb91e57483a11dd1b77e31c4468. Glibc 2.3.3 is
1862 the only released version with the bug, but OpenSUSE 9
1863 contains a buggy "glibc 2.3.2".
1860 1864
1861 If unsure, say Y. 1865 The symptom of the bug is that everything crashes on startup, saying:
1866 dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!
1867
1868 Saying Y here changes the default value of the vdso32 boot
1869 option from 1 to 0, which turns off the 32-bit vDSO entirely.
1870 This works around the glibc bug but hurts performance.
1871
1872 If unsure, say N: if you are compiling your own kernel, you
1873 are unlikely to be using a buggy version of glibc.
1862 1874
1863config CMDLINE_BOOL 1875config CMDLINE_BOOL
1864 bool "Built-in kernel command line" 1876 bool "Built-in kernel command line"