Thread (2 messages) 2 messages, 2 authors, 2018-12-06

Re: [PATCH v4] signal: add taskfd_send_signal() syscall

From: Eric W. Biederman <hidden>
Date: 2018-12-06 19:17:41
Also in: linux-fsdevel, linux-man, lkml

Christian Brauner [off-list ref] writes:
On December 7, 2018 4:01:19 AM GMT+13:00, ebiederm@xmission.com wrote:
quoted
Christian Brauner [off-list ref] writes:
quoted
The kill() syscall operates on process identifiers (pid). After a
process
quoted
has exited its pid can be reused by another process. If a caller
sends a
quoted
signal to a reused pid it will end up signaling the wrong process.
This
quoted
issue has often surfaced and there has been a push [1] to address
this
quoted
problem.

This patch uses file descriptors (fd) from proc/<pid> as stable
handles on
quoted
struct pid. Even if a pid is recycled the handle will not change. The
fd
quoted
can be used to send signals to the process it refers to.
Thus, the new syscall taskfd_send_signal() is introduced to solve
this
quoted
problem. Instead of pids it operates on process fds (taskfd).
I am not yet thrilled with the taskfd naming.
Userspace cares about what does this thing operate on?
It operates on processes and threads.
The most common term people use is "task".
I literally "polled" ten non-kernel people for that purpose and asked:
"What term would you use to refer to a process and a thread?"
Turns out it is task. So if find this pretty apt.
Additionally, the proc manpage uses task in the exact same way (also see the commit message).
If you can get behind that name even if feeling it's not optimal it would be great.
Once I understand why threads and not process groups.  I don't see that
logic yet.
quoted
Is there any plan to support sesssions and process groups?
I don't see the necessity.
As I said in previous mails:
we can emulate all interesting signal syscalls with this one.
I don't know what you mean by all of the interesting signal system
calls.  I do know you can not replicate kill(2).

Sending signals to a process group the "kill(-pgrp)" case with kill
sends the signals to an atomic snapshot of processes.  If the signal
is SIGKILL then it is guaranteed that then entire process group is
killed with no survivors.
We succeeded in doing that.
I am not certain you have.
No need to get more fancy.
There's currently no obvious need for more features.
Features should be implemented when someone actually needs them.
That is fair.  I don't understand what you are doing with sending
signals to a thread.  That seems like one of the least useful
corner cases of sending signals.

Eric
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help