• Oleg Nesterov's avatar
    uprobes: Teach uprobe_copy_process() to handle CLONE_VFORK · 3ab67966
    Oleg Nesterov authored
    uprobe_copy_process() does nothing if the child shares ->mm with
    the forking process, but there is a special case: CLONE_VFORK.
    In this case it would be more correct to do dup_utask() but avoid
    dup_xol(). This is not that important, the child should not unwind
    its stack too much, this can corrupt the parent's stack, but at
    least we need this to allow to ret-probe __vfork() itself.
    
    Note: in theory, it would be better to check task_pt_regs(p)->sp
    instead of CLONE_VFORK, we need to dup_utask() if and only if the
    child can return from the function called by the parent. But this
    needs the arch-dependant helper, and I think that nobody actually
    does clone(same_stack, CLONE_VM).
    Reported-by: default avatarMartin Cermak <mcermak@redhat.com>
    Reported-by: default avatarDavid Smith <dsmith@redhat.com>
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    3ab67966
fork.c 45.7 KB