OSDN Git Service

io_uring: pin SQPOLL data before unlocking ring lock
authorJens Axboe <axboe@kernel.dk>
Mon, 13 Sep 2021 19:08:51 +0000 (13:08 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 14 Sep 2021 01:44:29 +0000 (19:44 -0600)
commit41d3a6bd1d37149b18331fc4bb789c5456a7aeb0
tree41f4a7141c942781867487cb0cd7104fd7b386ce
parentdd47c104533dedb90434a3f142e94a671ac623a6
io_uring: pin SQPOLL data before unlocking ring lock

We need to re-check sqd->thread after we've dropped the lock. Pin
the sqd before doing the lockdep lock dance, and check if the thread
is alive after that. It's either NULL or alive, as the SQPOLL thread
cannot exit without holding the same sqd->lock.

Reported-and-tested-by: syzbot+337de45f13a4fd54d708@syzkaller.appspotmail.com
Fixes: fa84693b3c89 ("io_uring: ensure IORING_REGISTER_IOWQ_MAX_WORKERS works with SQPOLL")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c