RFC PIDTYPE_TGID and fewer fork restarts
Get series with b4
b4 am [email protected]Versions newest first
- v1 RFC Latest11 patches 24 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/11 | pids: Initialize leader_pid in init_taskinit/ | +1 | 0 replies | |
| 2/11 | pids: Move task_pid_type into sched/signal.hinclude/ kernel/ | +8 | 0 replies | |
| 3/11 | pids: Compute task_tgid using signal->leader_pidarch/ arch/ drivers/ +6 more | +22 | 0 replies | |
| 4/11 | kvm: Don't open code task_pid in kvm_vcpu_ioctlvirt/ | +1 | 0 replies | |
| 5/11 | pids: Move the pgrp and session pid pointers from task_struct to signal_structarch/ arch/ fs/ +7 more | +78 | 1 reply | |
| 6/11 | pid: Implement PIDTYPE_TGIDarch/ arch/ arch/ +11 more | +19 | 0 replies | |
| 7/11 | signal: Deliver group signals via PIDTYPE_TGID not PIDTYPE_PIDkernel/ kernel/ | +5 | 10 replies | |
| 8/11 | signal: Use PIDTYPE_TGID to clearly store where file signals will be sentdrivers/ drivers/ fs/ +2 more | +14 | 0 replies | |
| 9/11 | tty_io: Use do_send_sig_info in __do_SACK to forcibly kill tasksdrivers/ | +3 | 7 replies | |
| 10/11 | signal: Push pid type from signal senders down into __send_signaldrivers/ drivers/ fs/ +7 more | +60 | 1 reply | |
| 11/11 | signal: Ignore all but multi-process signals that come in during fork.include/ kernel/ kernel/ | +20 | 5 replies |
Reviews trailers per patch
1 of 11 patches has a Reviewed-by or Acked-by.
| Patch | Oleg Nesterov |
|---|---|
| 1/11 | |
| 2/11 | |
| 3/11 | |
| 4/11 | |
| 5/11 | |
| 6/11 | |
| 7/11 | |
| 8/11 | |
| 9/11 | |
| 10/11 | |
| 11/11 | A-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [RFC][PATCH 0/11] PIDTYPE_TGID and fewer fork restarts
The following patches should be close. I took some patches I haven't taken the time to merge yet that make PIDTYPE_TGID not a hack.
Updated the code that deals with signals to handle PIDTYPE_TGID.
Pushed the pid type down from the signal senders all of the way down into __send_signal. That work could probably use being split into more than one patch for readability, but it seems reasonble and less of a hack than the "bool group" we have currently.
I think I have gotten all of the places we send signals to multiple processes. But I have yet to make an exhaustive examination. I would appreciate some review feedback before I burn a day doing that.
All in all this changes a little more than I might hope for but it seems a nicely targted cleanup that sorts out the fork issue.
Comments please.
I think I am 99% of the way to solving this cleanly but any feedback would be very appreciated.
Thank you in advance.
Eric W. Biederman (11):
pids: Initialize leader_pid in init_task
pids: Move task_pid_type into sched/signal.h
pids: Compute task_tgid using signal->leader_pid
kvm: Don't open code task_pid in kvm_vcpu_ioctl
pids: Move the pgrp and session pid pointers from task_struct to signal_struct
pid: Implement PIDTYPE_TGID
signal: Deliver group signals via PIDTYPE_TGID not PIDTYPE_PID
signal: Use PIDTYPE_TGID to clearly store where file signals will be sent
tty_io: Use do_send_sig_info in __do_SACK to forcibly kill tasks
signal: Push pid type from signal senders down into __send_signal
signal: Ignore all but multi-process signals that come in during fork.
arch/ia64/kernel/asm-offsets.c | 4 +-- arch/ia64/kernel/fsys.S | 12 +++---- arch/s390/kernel/perf_cpum_sf.c | 2 +- drivers/net/tun.c | 2 +- drivers/platform/x86/thinkpad_acpi.c | 1 + drivers/tty/sysrq.c | 2 +- drivers/tty/tty_io.c | 10 +++--- fs/autofs/autofs_i.h | 1 + fs/exec.c | 1 + fs/fcntl.c | 38 ++++++++-------------- fs/fuse/file.c | 1 + fs/locks.c | 2 +- fs/notify/dnotify/dnotify.c | 3 +- fs/notify/fanotify/fanotify.c | 1 + include/linux/init_task.h | 9 ------ include/linux/pid.h | 11 ++----- include/linux/sched.h | 31 ++++-------------- include/linux/sched/signal.h | 39 +++++++++++++++++++++-- include/linux/signal.h | 6 ++-- include/net/scm.h | 1 + include/trace/events/signal.h | 12 +++---- init/init_task.c | 12 ++++--- kernel/events/core.c | 2 +- kernel/exit.c | 12 ++----- kernel/fork.c | 45 +++++++++++++++++++++----- kernel/pid.c | 42 ++++++++++++------------- kernel/signal.c | 61 ++++++++++++++++++++---------------- kernel/time/itimer.c | 5 +-- kernel/time/posix-cpu-timers.c | 2 +- kernel/time/posix-timers.c | 13 +++----- mm/oom_kill.c | 4 +-- virt/kvm/kvm_main.c | 2 +- 32 files changed, 205 insertions(+), 184 deletions(-)