summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2021-03-20 04:25:13 +0300
committerJens Axboe <axboe@kernel.dk>2021-03-21 18:39:32 +0300
commit5be28c8f85ce99ed2d329d2ad8bdd18ea19473a5 (patch)
treea0e1f35dc49381c58cfb40e10d32d14aaf5996ed
parentde75a3d3f5a14c9ab3c4883de3471d3c92a8ee78 (diff)
downloadlinux-5be28c8f85ce99ed2d329d2ad8bdd18ea19473a5.tar.xz
signal: don't allow sending any signals to PF_IO_WORKER threads
They don't take signals individually, and even if they share signals with the parent task, don't allow them to be delivered through the worker thread. Linux does allow this kind of behavior for regular threads, but it's really a compatability thing that we need not care about for the IO threads. Reported-by: Stefan Metzmacher <metze@samba.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--kernel/signal.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index ba4d1ef39a9e..11cabcf20e7a 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -833,6 +833,9 @@ static int check_kill_permission(int sig, struct kernel_siginfo *info,
if (!valid_signal(sig))
return -EINVAL;
+ /* PF_IO_WORKER threads don't take any signals */
+ if (t->flags & PF_IO_WORKER)
+ return -ESRCH;
if (!si_fromuser(info))
return 0;