-
- Downloads
[PATCH] vdso: randomize the i386 vDSO by moving it into a vma
Move the i386 VDSO down into a vma and thus randomize it. Besides the security implications, this feature also helps debuggers, which can COW a vma-backed VDSO just like a normal DSO and can thus do single-stepping and other debugging features. It's good for hypervisors (Xen, VMWare) too, which typically live in the same high-mapped address space as the VDSO, hence whenever the VDSO is used, they get lots of guest pagefaults and have to fix such guest accesses up - which slows things down instead of speeding things up (the primary purpose of the VDSO). There's a new CONFIG_COMPAT_VDSO (default=y) option, which provides support for older glibcs that still rely on a prelinked high-mapped VDSO. Newer distributions (using glibc 2.3.3 or later) can turn this option off. Turning it off is also recommended for security reasons: attackers cannot use the predictable high-mapped VDSO page as syscall trampoline anymore. There is a new vdso=[0|1] boot option as well, and a runtime /proc/sys/vm/vdso_enabled sysctl switch, that allows the VDSO to be turned on/off. (This version of the VDSO-randomization patch also has working ELF coredumping, the previous patch crashed in the coredumping code.) This code is a combined work of the exec-shield VDSO randomization code and Gerd Hoffmann's hypervisor-centric VDSO patch. Rusty Russell started this patch and i completed it. [akpm@osdl.org: cleanups] [akpm@osdl.org: compile fix] [akpm@osdl.org: compile fix 2] [akpm@osdl.org: compile fix 3] [akpm@osdl.org: revernt MAXMEM change] Signed-off-by:Ingo Molnar <mingo@elte.hu> Signed-off-by:
Arjan van de Ven <arjan@infradead.org> Cc: Gerd Hoffmann <kraxel@suse.de> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Zachary Amsden <zach@vmware.com> Cc: Andi Kleen <ak@muc.de> Cc: Jan Beulich <jbeulich@novell.com> Signed-off-by:
Andrew Morton <akpm@osdl.org> Signed-off-by:
Linus Torvalds <torvalds@osdl.org>
Showing
- Documentation/kernel-parameters.txt 4 additions, 0 deletionsDocumentation/kernel-parameters.txt
- arch/i386/Kconfig 11 additions, 0 deletionsarch/i386/Kconfig
- arch/i386/kernel/asm-offsets.c 3 additions, 1 deletionarch/i386/kernel/asm-offsets.c
- arch/i386/kernel/entry.S 6 additions, 1 deletionarch/i386/kernel/entry.S
- arch/i386/kernel/signal.c 2 additions, 2 deletionsarch/i386/kernel/signal.c
- arch/i386/kernel/sysenter.c 124 additions, 4 deletionsarch/i386/kernel/sysenter.c
- arch/i386/kernel/vsyscall-sysenter.S 2 additions, 2 deletionsarch/i386/kernel/vsyscall-sysenter.S
- arch/i386/kernel/vsyscall.lds.S 2 additions, 2 deletionsarch/i386/kernel/vsyscall.lds.S
- fs/proc/task_mmu.c 18 additions, 12 deletionsfs/proc/task_mmu.c
- include/asm-i386/elf.h 40 additions, 13 deletionsinclude/asm-i386/elf.h
- include/asm-i386/fixmap.h 1 addition, 9 deletionsinclude/asm-i386/fixmap.h
- include/asm-i386/mmu.h 1 addition, 0 deletionsinclude/asm-i386/mmu.h
- include/asm-i386/page.h 3 additions, 0 deletionsinclude/asm-i386/page.h
- include/asm-i386/thread_info.h 1 addition, 0 deletionsinclude/asm-i386/thread_info.h
- include/asm-i386/unwind.h 2 additions, 2 deletionsinclude/asm-i386/unwind.h
- include/linux/mm.h 2 additions, 0 deletionsinclude/linux/mm.h
- include/linux/sysctl.h 1 addition, 0 deletionsinclude/linux/sysctl.h
- kernel/sysctl.c 12 additions, 0 deletionskernel/sysctl.c
Loading
Please register or sign in to comment