While working on cleaning up the exit path it have had occasion to look at what guarantees are provided for setting and reading the fields that are provided in task_struct for ptraces. Namely exit_code, ptrace_message, and last_siginfo. It turns out as the ptrace interface in the kernel was extended in the kernel the old existing interfaces in the kernel were just wrapped and not properly updated to handle the new functionality. This lead to races and inconsistencies. This fixes the reason for the races and inconsistencies by moving the work of maintaining the ptrace fields into ptrace_stop. The inconsistency that results in some ptrace_stop points continuing with a signal while others will not I have left alone as it appears to be part of our userspace ABI, and changing that risks breaking userspace. Eric W. Biederman (2): ptrace: Move setting/clearing ptrace_message into ptrace_stop ptrace: Return the signal to continue with from ptrace_stop include/linux/ptrace.h | 17 +++++++---------- include/uapi/linux/ptrace.h | 2 +- kernel/signal.c | 40 ++++++++++++++++++++++++---------------- 3 files changed, 32 insertions(+), 27 deletions(-) Eric