diff --git a/kernel/signal.c b/kernel/signal.c
index ba4d1ef39a9ead9847985954c8edb3629114eb6d..11cabcf20e7a6b18fb8917c59b74b305862a9761 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;