• B
    [PATCH] ppc64: Improve mapping of vDSO · 547ee84c
    Benjamin Herrenschmidt 提交于
    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: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: NAndrew Morton <akpm@osdl.org>
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    547ee84c
binfmt_elf.c 45.2 KB