Re: [CRIU] [PATCH] Add VDSO time function support for x86 32-bitkernel

From: Cyrill Gorcunov
Date: Fri Dec 14 2012 - 17:25:11 EST


On Fri, Dec 14, 2012 at 02:00:17PM -0800, H. Peter Anvin wrote:
> On 12/14/2012 01:27 PM, Andy Lutomirski wrote:
> >
> > I don't know all that much about the linux vm. Can we create a
> > special vdso address_space or struct inode or something so that a
> > single vma can contain pages with different flags?
> >
>
> No, that is still different vmas, but it probably isn't a big deal.
>
> The advantage of having an inode/namespace is that it lets you use
> mmap() as opposed to mremap() with it, which might be useful, I don't know.
>
> One option for the checkpoint people might actually be to not use the
> vdso for a process that needs to be checkpointed and restarted on a
> different machine or different kernel version. Instead they can install
> a pseudo-vdso which just calls normal system calls, and is simply a
> static piece of code that makes normal system calls ... since the
> internals of the kernel are hidden from userspace it is "clean" that way.
>
> With any actual vdso you risk something like:
>

Is there a chance to make it something like that (assuming the
dumpee is ptraced)

> -> vdso entry

mark task as vdso-entered

> -> signal received, transfer to signal handler
> -> signal handler exit

before task leave vdso the task mark vdso-entered get cleaned
and if ptraced, the ptracing task is notified

> ... and now you return to the address in the old vdso, but the internals
> of the vdso may have changed.

this would allow us to defer checkpoint until task finish vdso code. Peter,
if I understand you correctly you propose we provide some own proxy-vdso
which would redirect calls to real ones, right? But the main problem
is that is exactly the idea to be able to c/r existing programs without
recompiling and such (or I miss something here?).

Cyrill
--
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/