Re: [PATCH v2 2/2] pidfd: change pidfd_send_signal() to respect PIDFD_THREAD
From: Christian Brauner
Date: Sat Feb 10 2024 - 05:23:24 EST
> and I forgot to mention, if you want to add PIDFD_SIGNAL_PRGP you can
> look at __kill_pgrp_info().
Yeah, I did that and there's a semantical twist in the old kill(2)
system call that made me think:
(1) kill(-1234) => kill process group with id 1234
(2) kill(0) => kill process group of @current
which implementation wise is indicated by
__kill_pgrp_info(..., pid ? find_vpid(-pid) ? task_pgrp(current))
We're obviously not going to implement (2) as that doesn't really make a
sense for pidfd_send_signal().
But (1) is also wrong for pidfd_send_signal(). If we'd ever implement
(1) it should be via pidfd_open(1234, PIDFD_PROCESS_GROUP).
So if PIDFD_PROCESS_GROUP is set then we want to send a signal to the
process group that @pidfd is in. Unless there's reasons we can't do
this. I tried to draft this and what I have is a totally uncompiled
draft.
I was unsure how best to cleanly express how to take the process group
from the struct pid of that @pidfd. So I modeled it after how we do it
for PIDTYPE_TGID.