aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2019-05-15 12:23:03 -0500
committerEric W. Biederman <ebiederm@xmission.com>2019-05-27 09:36:28 -0500
commit1dfd1711de2952fd1bfeea7152bd1687a4eea771 (patch)
tree538d0563415e622d7ed2de7c3333ff9c929b8972
parentsignal/drbd: Use send_sig not force_sig (diff)
downloadlinux-dev-1dfd1711de2952fd1bfeea7152bd1687a4eea771.tar.xz
linux-dev-1dfd1711de2952fd1bfeea7152bd1687a4eea771.zip
signal/bpfilter: Fix bpfilter_kernl to use send_sig not force_sig
The locking in force_sig_info is not prepared to deal with a task that exits or execs (as sighand may change). As force_sig is only built to handle synchronous exceptions. Further the function force_sig_info changes the signal state if the signal is ignored, or blocked or if SIGNAL_UNKILLABLE will prevent the delivery of the signal. The signal SIGKILL can not be ignored and can not be blocked and SIGNAL_UNKILLABLE won't prevent it from being delivered. So using force_sig rather than send_sig for SIGKILL is pointless. Because it won't impact the sending of the signal and and because using force_sig is wrong, replace force_sig with send_sig. Cc: Alexei Starovoitov <ast@kernel.org> Cc: David S. Miller <davem@davemloft.net> Fixes: d2ba09c17a06 ("net: add skeleton of bpfilter kernel module") Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
-rw-r--r--net/bpfilter/bpfilter_kern.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/bpfilter/bpfilter_kern.c b/net/bpfilter/bpfilter_kern.c
index 7ee4fea93637..c0f0990f30b6 100644
--- a/net/bpfilter/bpfilter_kern.c
+++ b/net/bpfilter/bpfilter_kern.c
@@ -22,7 +22,7 @@ static void shutdown_umh(void)
tsk = get_pid_task(find_vpid(bpfilter_ops.info.pid), PIDTYPE_PID);
if (tsk) {
- force_sig(SIGKILL, tsk);
+ send_sig(SIGKILL, tsk, 1);
put_task_struct(tsk);
}
}