Re: [PATCH v2 0/2] x86: Relocate the compat vdso per process

From: Andy Lutomirski
Date: Wed Mar 12 2014 - 12:21:31 EST


On Tue, Mar 11, 2014 at 11:14 PM, H. Peter Anvin <hpa@xxxxxxxxx> wrote:
> There is one sensible address: end of address space perhaps minus some small offset. Unlikely to be used by anything specific.

Meh. The compat vdso logic will end up being either:

1) Try to map at the preferred address. If it fails, don't map it.
Force ASLR off for the vdso

2) Try to map at the preferred address. If it fails, map somewhere
else and relocate.

3) Try to map at the preferred address unless ASLR is on. If it fails
or ASLR is on, map somewhere else and relocate.

since the whole point is to simplify this stuff, I don't really like
any of these choices. That's a lot of code to save 4k per process,
and when it breaks (which I suspect it will the next time anyone
touches the address space layout) so one will notice that 4k gets
wasted again.

>
> On March 11, 2014 11:09:11 PM PDT, Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote:
>>On Mar 11, 2014 10:02 PM, "H. Peter Anvin" <hpa@xxxxxxxxx> wrote:
>>>
>>> On 03/11/2014 03:15 PM, Andy Lutomirski wrote:
>>>>
>>>> The meat of this patch series is in patch 1. Patch 2 is split out
>>for
>>>> improved bisectability.
>>>>
>>>> Changes from v1: Split into two patches and fixed a comment.
>>>>
>>>> Andy Lutomirski (2):
>>>> x86: Dynamically relocate the compat vdso
>>>> x86_32: Remove user bit from identity map PDE
>>>>
>>>> Documentation/kernel-parameters.txt | 18 +++-
>>>> arch/x86/Kconfig | 24 +++--
>>>> arch/x86/include/asm/elf.h | 4 -
>>>> arch/x86/include/asm/fixmap.h | 8 --
>>>> arch/x86/include/asm/pgtable_types.h | 7 +-
>>>> arch/x86/include/asm/vdso.h | 5 +-
>>>> arch/x86/vdso/vdso-layout.lds.S | 2 +-
>>>> arch/x86/vdso/vdso32-setup.c | 173
>>++++++++++++++++-------------------
>>>> arch/x86/vdso/vdso32/vdso32.lds.S | 2 -
>>>> 9 files changed, 111 insertions(+), 132 deletions(-)
>>>>
>>>
>>> Why per process? *If* we have compat vdso turned on, can't we just
>>put it in one place system-wide?
>>
>>My machine has ASLR turned on, and the vma really does end up
>>somewhere different each time. I suspect that most (?) ASLR users
>>would happily accept the 4k hit to keep ASLR working fully.
>>
>>Another downside of trying to have a common address for all processes:
>>someone needs to figure out what that address is. What happens if an
>>ELF binary (or interpreter) wants to load something at the chosen
>>address?
>>
>>--Andy
>
> --
> Sent from my mobile phone. Please pardon brevity and lack of formatting.



--
Andy Lutomirski
AMA Capital Management, LLC
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/