Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1390466

Re: VDSO unmap and remap support for additional architectures

From Andy Lutomirski <luto@kernel.org>
Newsgroups linux.kernel
Subject Re: VDSO unmap and remap support for additional architectures
Date 2016-04-28 21:00 +0200
Message-ID <rsZkn-mr-33@gated-at.bofh.it> (permalink)
References <qBey6-72N-37@gated-at.bofh.it> <rsW37-5Ij-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On 04/28/2016 08:18 AM, Christopher Covington wrote:
> Please take a look at the following prototype of sharing the PowerPC
> VDSO unmap and remap code with other architectures. I've only hooked
> up arm64 to begin with. If folks think this is a reasonable approach I
> can work on 32 bit ARM as well. Not hearing back from an earlier
> request for guidance [1], I simply dove in and started hacking.
> Laurent's test case [2][3] is a compelling illustration of whether VDSO
> remap works or not on a given architecture.

I think there's a much nicer way:

https://lkml.kernel.org/r/1461584223-9418-1-git-send-email-dsafonov@virtuozzo.com

Could arm64 and ppc use this approach?  These arch_xyz hooks are gross.

Also, at some point, possibly quite soon, x86 will want a way for user code to ask the kernel to map a specific vdso variant at a specific address.  Could we perhaps add a new pair of syscalls:

struct vdso_info {
    unsigned long space_needed_before;
    unsigned long space_needed_after;
    unsigned long alignment;
};

long vdso_get_info(unsigned int vdso_type, struct vdso_info *info);

long vdso_remap(unsigned int vdso_type, unsigned long addr, unsigned int flags);

#define VDSO_X86_I386 0
#define VDSO_X86_64 1
#define VDSO_X86_X32 2
// etc.

vdso_remap will map the vdso of the chosen type such at AT_SYSINFO_EHDR lines up with addr.  It will use up to space_needed_before bytes before that address and space_needed_after after than address.  It will also unmap the old vdso (or maybe only do that if some flag is set).

On x86, mremap is *not* sufficient for everything that's needed, because some programs will need to change the vdso type.

--Andy

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

VDSO unmap and remap support for additional architectures Christopher Covington <cov@codeaurora.org> - 2016-04-28 17:30 +0200
  [RFC 5/5] arm64: Gain VDSO unmap and remap powers Christopher Covington <cov@codeaurora.org> - 2016-04-28 17:30 +0200
  [RFC 2/5] mm/powerpc: Make VDSO unmap generic Christopher Covington <cov@codeaurora.org> - 2016-04-28 17:30 +0200
  Re: VDSO unmap and remap support for additional architectures Andy Lutomirski <luto@kernel.org> - 2016-04-28 21:00 +0200
    Re: VDSO unmap and remap support for additional architectures Christopher Covington <cov@codeaurora.org> - 2016-04-29 15:30 +0200
      Re: VDSO unmap and remap support for additional architectures Christopher Covington <cov@codeaurora.org> - 2016-05-03 23:40 +0200

csiph-web