From: Jens Axboe axboe@kernel.dk
[ Upstream commit 5be28c8f85ce99ed2d329d2ad8bdd18ea19473a5 ]
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 Signed-off-by: Sasha Levin sashal@kernel.org --- kernel/signal.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/kernel/signal.c b/kernel/signal.c index 5ad8566534e7..55526b941011 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;