signal: Use group_send_sig_info to kill all processes in a pid namespace
authorEric W. Biederman <ebiederm@xmission.com>
Fri, 20 Jul 2018 21:35:14 +0000 (16:35 -0500)
committerEric W. Biederman <ebiederm@xmission.com>
Sun, 16 Sep 2018 14:08:25 +0000 (16:08 +0200)
Replace send_sig_info in zap_pid_ns_processes with
group_send_sig_info.  This makes more sense as the entire process
group is being killed.  More importantly this allows the kill of those
processes with PIDTYPE_MAX to indicate all of the process in the pid
namespace are being signaled.  This is needed for fork to detect when
signals are sent to a group of processes.

Admittedly fork has another case to catch SIGKILL but the principle remains
that it is desirable to know when a group of processes is being signaled.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
kernel/pid_namespace.c

index c8d5339..aa6e72f 100644 (file)
@@ -216,7 +216,7 @@ void zap_pid_ns_processes(struct pid_namespace *pid_ns)
        idr_for_each_entry_continue(&pid_ns->idr, pid, nr) {
                task = pid_task(pid, PIDTYPE_PID);
                if (task && !__fatal_signal_pending(task))
-                       send_sig_info(SIGKILL, SEND_SIG_PRIV, task);
+                       group_send_sig_info(SIGKILL, SEND_SIG_PRIV, task, PIDTYPE_MAX);
        }
        read_unlock(&tasklist_lock);
        rcu_read_unlock();