Re: [RFC PATCH v1.9 12/14] livepatch: create per-task consistency model

From: Josh Poimboeuf
Date: Mon Apr 04 2016 - 14:33:14 EST


On Mon, Apr 04, 2016 at 08:27:59PM +0200, Vojtech Pavlik wrote:
> On Mon, Apr 04, 2016 at 01:21:38PM -0500, Josh Poimboeuf wrote:
>
> > Hm, can you explain why it should be copied from the parent?
> >
> > I'm thinking the above code is correct for today, but it should still be
> > changed to be more future-proof.
> >
> > Here's my thinking:
> >
> > A forked task starts out with no stack, so if I understand correctly, it
> > can safely start out in the goal universe, regardless of which universe
> > its parent belongs to.
> >
> > However, the current ret_from_fork code is a mess, and Andy Lutomirski
> > has mentioned that he would like to give newly forked tasks a proper
> > stack such that instead of jumping to ret_from_fork, they would just
> > return from schedule(). In that case, it would no longer be safe to
> > start the new task in the goal universe because it could be "sleeping"
> > on a to-be-patched function.
> >
> > So for proper future proofing, newly forked tasks should be started in
> > the initial universe (rather than starting in the goal universe or
> > inheriting the parent's universe). They can then be transitioned over
> > to the goal universe like any other task. How does that sound?
>
> How could a newly forked task start in the old universe if its parent
> has already been migrated? Any context it inherits will already be from
> the new universe.

Can you be more specific about "context" and why inheritance of it would
be a problem?

--
Josh