If the application uses io_uring and also relies heavily on signals for communication, that can cause io-wq workers to spuriously exit just because the parent has a signal pending. Just ignore signals unless they are fatal. Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> --- fs/io-wq.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/io-wq.c b/fs/io-wq.c index 8cba77a937a1..027eb4e13e3b 100644 --- a/fs/io-wq.c +++ b/fs/io-wq.c @@ -575,7 +575,9 @@ static int io_wqe_worker(void *data) if (!get_signal(&ksig)) continue; - break; + if (fatal_signal_pending(current)) + break; + continue; } if (ret) continue; -- 2.33.0