diff options
author | Andy Lutomirski <luto@amacapital.net> | 2014-03-21 02:01:21 +0400 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2014-03-21 02:19:14 +0400 |
commit | b67e612cef1e5964efc6fa99fb7ad3d31c4db01a (patch) | |
tree | c037de472a7e20c143dc3ca05e3f9327dc917d09 /arch/x86/vdso/vdso.S | |
parent | 4e40112c4ff6a577dd06d92b2a54cdf06265bf74 (diff) | |
download | linux-b67e612cef1e5964efc6fa99fb7ad3d31c4db01a.tar.xz |
x86: Load the 32-bit vdso in place, just like the 64-bit vdsos
This replaces a decent amount of incomprehensible and buggy code
with much more straightforward code. It also brings the 32-bit vdso
more in line with the 64-bit vdsos, so maybe someday they can share
even more code.
This wastes a small amount of kernel .data and .text space, but it
avoids a couple of allocations on startup, so it should be more or
less a wash memory-wise.
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Cc: Stefani Seibold <stefani@seibold.net>
Link: http://lkml.kernel.org/r/b8093933fad09ce181edb08a61dcd5d2592e9814.1395352498.git.luto@amacapital.net
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/vdso/vdso.S')
-rw-r--r-- | arch/x86/vdso/vdso.S | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/arch/x86/vdso/vdso.S b/arch/x86/vdso/vdso.S index 1e13eb8c9656..c749d15da2e9 100644 --- a/arch/x86/vdso/vdso.S +++ b/arch/x86/vdso/vdso.S @@ -1,21 +1,3 @@ -#include <asm/page_types.h> -#include <linux/linkage.h> +#include "vdso_image.h" -__PAGE_ALIGNED_DATA - - .globl vdso_start, vdso_end - .align PAGE_SIZE -vdso_start: - .incbin "arch/x86/vdso/vdso.so" -vdso_end: - .align PAGE_SIZE /* extra data here leaks to userspace. */ - -.previous - - .globl vdso_pages - .bss - .align 8 - .type vdso_pages, @object -vdso_pages: - .zero (vdso_end - vdso_start + PAGE_SIZE - 1) / PAGE_SIZE * 8 - .size vdso_pages, .-vdso_pages +DEFINE_VDSO_IMAGE(vdso, "arch/x86/vdso/vdso.so") |