lkml.org 
[lkml]   [2022]   [Jul]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v4] livepatch: fix race between fork and KLP transition
    On Wed 2022-07-27 10:24:37, Rik van Riel wrote:
    > v4: address changelog comments by Josh (thank you)
    >
    > ---8<---
    > When a KLP fails to apply, klp_reverse_transition will clear the
    > TIF_PATCH_PENDING flag on all tasks, except for newly created tasks
    > which are not on the task list yet.

    It actually is not true. klp_reverse_transtion() clears TIF_PATCH_FLAG only
    temporary when it waits until all processes leave the ftrace
    handler. It sets TIF_PATCH_FLAG once again for all tasks by calling
    klp_start_transition().

    The difference is important. The WARN_ON_ONCE() in
    klp_complete_transition() will be printed when fork() copied
    TIF_PATCH_FLAG before it was set again.

    Anyway, the important thing is that TIF_PATCH_FLAG and task->patch_state
    might be incompatible because fork() copies them at different times.

    klp_copy_process() must make sure that they are in sync. And
    it must be done under tasklist_lock when the child is added
    to the global task list.

    Best Regards,
    Petr

    \
     
     \ /
      Last update: 2022-07-28 17:38    [W:3.443 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site