[PATCH] ppc64: Improve mapping of vDSO
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Sat, 16 Apr 2005 22:24:35 +0000 (15:24 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sat, 16 Apr 2005 22:24:35 +0000 (15:24 -0700)
commit547ee84cea37696d25c93306e909378a87db2f66
treee21a5ce886975623d07add60beb223e6f36bab80
parentfa89c5092eddcbcb425a1416f85906e3cc519793
[PATCH] ppc64: Improve mapping of vDSO

This patch reworks the way the ppc64 is mapped in user memory by the kernel
to make it more robust against possible collisions with executable
segments.  Instead of just whacking a VMA at 1Mb, I now use
get_unmapped_area() with a hint, and I moved the mapping of the vDSO to
after the mapping of the various ELF segments and of the interpreter, so
that conflicts get caught properly (it still has to be before
create_elf_tables since the later will fill the AT_SYSINFO_EHDR with the
proper address).

While I was at it, I also changed the 32 and 64 bits vDSO's to link at
their "natural" address of 1Mb instead of 0.  This is the address where
they are normally mapped in absence of conflict.  By doing so, it should be
possible to properly prelink one it's been verified to work on glibc.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/ppc64/kernel/vdso.c
fs/binfmt_elf.c
include/asm-ppc64/vdso.h