[CRIU] Dealing with VDSO remap

Laurent Dufour ldufour at linux.vnet.ibm.com
Fri Mar 6 06:15:56 PST 2015


Hi,

I'm porting CRIU to the PopwerPC architecture, and among other issues,
I'm facing a major one with the VDSO remapping at restart time.

On PowerPC, as on ARM64, the kernel keeps track of the VDSO base address
because it is using it to jump back to a sigreturn trampoline at the end
of a signal processing (see handle_rt_signal64 in
arch/powerpc/kernel/signal_64.c, and for ARM64, setup_return in
arch/arm64/kernel/signal.c).

When remapping the VDSO at restart time, the kernel keep the reference
to the previous VDSO mapping, the one inheriting from the criu, so
handling signal after the restart leads to unpredictable results, most
of the time a SIGSEGV is raised.

I didn't find a smart way to update the kernel reference to the vdso
mapping once the VDSO is remapped, so no way to work around that today.

Furthermore, since this is the same picture on ARM 64, I'm wondering how
it could work on this architecture. Am I missing a major thing here ?

If not, is there a plan in the CRIU project to to deal with that, other
than by hacking the kernel to update its reference at restart time ?

Thanks,
Laurent.



More information about the CRIU mailing list