On Mon, Jun 21, 2021 at 12:22:06PM -0700, Linus Torvalds wrote:
On Mon, Jun 21, 2021 at 11:59 AM Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
There's a large mess around do_exit() - we have a bunch of
callers all over arch/*; if nothing else, I very much doubt that really
want to let tracer play with a thread in the middle of die_if_kernel()
or similar.
Right you are.
I'm really beginning to hate ptrace_{event,notify}() and those
PTRACE_EVENT_xyz things.
I don't even know what uses them, honestly. How very annoying.
I guess it's easy enough (famous last words) to move the
ptrace_event() call out of do_exit() and into the actual
exit/exit_group system calls, and the signal handling path. The paths
that actually have proper pt_regs.
Looks like sys_exit() and do_group_exit() would be the two places to
do it (do_group_exit() would handle the signal case and
sys_group_exit()).
Maybe... I'm digging through that pile right now, will follow up when
I get a reasonably complete picture. In the meanwhile, do kernel/kthread.c
uses look even remotely sane? Intentional - sure, but it really looks
wrong to use thread exit code as communication channel there...