Re: [RFC PATCH v1.9 12/14] livepatch: create per-task consistency model
From: Vojtech Pavlik
Date: Mon Apr 04 2016 - 15:00:38 EST
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.
--
Vojtech Pavlik
Director SuSE Labs