lkml.org 
[lkml]   [2022]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    Subject[PATCH v4 0/12] ptrace: cleaning up ptrace_stop

    The states TASK_STOPPED and TASK_TRACE are special in they can not
    handle spurious wake-ups. This plus actively depending upon and
    changing the value of tsk->__state causes problems for PREEMPT_RT and
    Peter's freezer rewrite.

    There are a lot of details we have to get right to sort out the
    technical challenges and this is my parred back version of the changes
    that contains just those problems I see good solutions to that I believe
    are ready.

    A couple of issues have been pointed but I think this parred back set of
    changes is still on the right track. The biggest change in v4 is the
    split of "ptrace: Admit ptrace_stop can generate spuriuos SIGTRAPs" into
    two patches because the dependency I thought exited between two
    different changes did not exist. The rest of the changes are minor
    tweaks to "ptrace: Admit ptrace_stop can generate spuriuos SIGTRAPs";
    removing an always true branch, and adding an early test to see if the
    ptracer had gone, before TASK_TRAPPING was set.

    This set of changes should support Peter's freezer rewrite, and with the
    addition of changing wait_task_inactive(TASK_TRACED) to be
    wait_task_inactive(0) in ptrace_check_attach I don't think there are any
    races or issues to be concerned about from the ptrace side.

    More work is needed to support PREEMPT_RT, but these changes get things
    closer.

    This set of changes continues to look like it will provide a firm
    foundation for solving the PREEMPT_RT and freezer challenges.

    Eric W. Biederman (11):
    signal: Rename send_signal send_signal_locked
    signal: Replace __group_send_sig_info with send_signal_locked
    ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP
    ptrace/xtensa: Replace PT_SINGLESTEP with TIF_SINGLESTEP
    ptrace: Remove arch_ptrace_attach
    signal: Use lockdep_assert_held instead of assert_spin_locked
    ptrace: Reimplement PTRACE_KILL by always sending SIGKILL
    ptrace: Document that wait_task_inactive can't fail
    ptrace: Admit ptrace_stop can generate spuriuos SIGTRAPs
    ptrace: Don't change __state
    ptrace: Always take siglock in ptrace_resume

    Peter Zijlstra (1):
    sched,signal,ptrace: Rework TASK_TRACED, TASK_STOPPED state

    arch/ia64/include/asm/ptrace.h | 4 --
    arch/ia64/kernel/ptrace.c | 57 ----------------
    arch/um/include/asm/thread_info.h | 2 +
    arch/um/kernel/exec.c | 2 +-
    arch/um/kernel/process.c | 2 +-
    arch/um/kernel/ptrace.c | 8 +--
    arch/um/kernel/signal.c | 4 +-
    arch/x86/kernel/step.c | 3 +-
    arch/xtensa/kernel/ptrace.c | 4 +-
    arch/xtensa/kernel/signal.c | 4 +-
    drivers/tty/tty_jobctrl.c | 4 +-
    include/linux/ptrace.h | 7 --
    include/linux/sched.h | 10 ++-
    include/linux/sched/jobctl.h | 8 +++
    include/linux/sched/signal.h | 20 ++++--
    include/linux/signal.h | 3 +-
    kernel/ptrace.c | 87 ++++++++---------------
    kernel/sched/core.c | 5 +-
    kernel/signal.c | 140 +++++++++++++++++---------------------
    kernel/time/posix-cpu-timers.c | 6 +-
    20 files changed, 140 insertions(+), 240 deletions(-)

    Eric

    \
     
     \ /
      Last update: 2022-05-05 20:35    [W:4.311 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site