mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
io_uring/eventfd: use ctx->rings_rcu for flags checking
Similarly to what commit e78f7b70e837 did for local task work additions,
use ->rings_rcu under RCU rather than dereference ->rings directly. See
that commit for more details.
Cc: stable@vger.kernel.org
Fixes: 79cfe9e59c ("io_uring/register: add IORING_REGISTER_RESIZE_RINGS")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
@@ -76,11 +76,15 @@ void io_eventfd_signal(struct io_ring_ctx *ctx, bool cqe_event)
|
||||
{
|
||||
bool skip = false;
|
||||
struct io_ev_fd *ev_fd;
|
||||
|
||||
if (READ_ONCE(ctx->rings->cq_flags) & IORING_CQ_EVENTFD_DISABLED)
|
||||
return;
|
||||
struct io_rings *rings;
|
||||
|
||||
guard(rcu)();
|
||||
|
||||
rings = rcu_dereference(ctx->rings_rcu);
|
||||
if (!rings)
|
||||
return;
|
||||
if (READ_ONCE(rings->cq_flags) & IORING_CQ_EVENTFD_DISABLED)
|
||||
return;
|
||||
ev_fd = rcu_dereference(ctx->io_ev_fd);
|
||||
/*
|
||||
* Check again if ev_fd exists in case an io_eventfd_unregister call
|
||||
|
||||
Reference in New Issue
Block a user