[CRIU] [PATCH 3/3] arm64: detect vDSO remaps

Cyrill Gorcunov gorcunov at gmail.com
Tue Mar 11 23:03:39 PDT 2014


On Wed, Mar 12, 2014 at 10:05:50AM +0400, Alexander Kartashov wrote:
> On 03/11/2014 02:51 PM, Cyrill Gorcunov wrote:
> >Alexander, there is aspect I don't understand (you might be explaining
> >me but I start to doubt again). Here is what we have on x86-64
> >
> >  - once proceess starts up the kernel provides vDSO area for it
> >  - if such vdso area intersects with image addresses we
> >   - remap runtime vdso to a new free address with MAP_FIXED
> >   - map old vDSO from image to original address then proxify it if needed
> >
> >how it's different from ARM64?
>
> It's exactly the same but for tiny nuance: the kernel initializes
> some variables in the arm64 specific part of a task_struct
> when a process is created binding them to vDSO symbols:
> particularly the signal trampoline is situated in the vDSO
> and the kernel stores its address in the task struct.
> This means it's impossible to remap the vDSO area without
> breaking signal handling.
> 
> This patch copes with this problem by adjusting the task struct
> when the vDSO area is remapped.

What a crap ;) Could you point which exactly variable in task struct
bound to vdso address?


More information about the CRIU mailing list