summaryrefslogtreecommitdiff
path: root/fs/io-wq.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2020-08-23 20:00:37 +0300
committerJens Axboe <axboe@kernel.dk>2020-08-23 20:03:53 +0300
commitfd7d6de2241453fc7d042336d366a939a25bc5a9 (patch)
treeb72bd45cda4f560cb1d3857139f62f0fdb5d0f25 /fs/io-wq.c
parent867a23eab52847d41a0a6eae41a64d76de7782a8 (diff)
downloadlinux-fd7d6de2241453fc7d042336d366a939a25bc5a9.tar.xz
io_uring: don't recurse on tsk->sighand->siglock with signalfd
If an application is doing reads on signalfd, and we arm the poll handler because there's no data available, then the wakeup can recurse on the tasks sighand->siglock as the signal delivery from task_work_add() will use TWA_SIGNAL and that attempts to lock it again. We can detect the signalfd case pretty easily by comparing the poll->head wait_queue_head_t with the target task signalfd wait queue. Just use normal task wakeup for this case. Cc: stable@vger.kernel.org # v5.7+ Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs/io-wq.c')
0 files changed, 0 insertions, 0 deletions