diff options
Diffstat (limited to 'arch/x86/Kconfig')
-rw-r--r-- | arch/x86/Kconfig | 30 |
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 | ||
1850 | config COMPAT_VDSO | 1850 | config 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 | ||
1863 | config CMDLINE_BOOL | 1875 | config CMDLINE_BOOL |
1864 | bool "Built-in kernel command line" | 1876 | bool "Built-in kernel command line" |