From: Jens Axboe Date: Sat, 14 Mar 2026 14:46:17 +0000 (-0600) Subject: io_uring: mark known and harmless racy ctx->int_flags uses X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8c557449199e8267bc969ae7e1d70b343b6a646d;p=thirdparty%2Fkernel%2Flinux.git io_uring: mark known and harmless racy ctx->int_flags uses There are a few of these, where flags are read outside of the uring_lock, yet it's harmless to race on them. Signed-off-by: Jens Axboe --- diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index bfeb3bc3849d..fb5a263706be 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -2242,7 +2242,7 @@ static __poll_t io_uring_poll(struct file *file, poll_table *wait) struct io_ring_ctx *ctx = file->private_data; __poll_t mask = 0; - if (unlikely(!(ctx->int_flags & IO_RING_F_POLL_ACTIVATED))) + if (unlikely(!(data_race(ctx->int_flags) & IO_RING_F_POLL_ACTIVATED))) io_activate_pollwq(ctx); /* * provides mb() which pairs with barrier from wq_has_sleeper diff --git a/io_uring/io_uring.h b/io_uring/io_uring.h index 5cb1983043cd..91cf67b5d85b 100644 --- a/io_uring/io_uring.h +++ b/io_uring/io_uring.h @@ -470,11 +470,12 @@ static inline void io_req_complete_defer(struct io_kiocb *req) wq_list_add_tail(&req->comp_list, &state->compl_reqs); } +#define SHOULD_FLUSH_MASK (IO_RING_F_OFF_TIMEOUT_USED | \ + IO_RING_F_HAS_EVFD | IO_RING_F_POLL_ACTIVATED) + static inline void io_commit_cqring_flush(struct io_ring_ctx *ctx) { - if (unlikely(ctx->int_flags & (IO_RING_F_OFF_TIMEOUT_USED | - IO_RING_F_HAS_EVFD | - IO_RING_F_POLL_ACTIVATED))) + if (unlikely(data_race(ctx->int_flags) & SHOULD_FLUSH_MASK)) __io_commit_cqring_flush(ctx); } diff --git a/io_uring/tw.c b/io_uring/tw.c index 022fe8753c19..fdff81eebc95 100644 --- a/io_uring/tw.c +++ b/io_uring/tw.c @@ -222,7 +222,7 @@ void io_req_local_work_add(struct io_kiocb *req, unsigned flags) if (!head) { io_ctx_mark_taskrun(ctx); - if (ctx->int_flags & IO_RING_F_HAS_EVFD) + if (data_race(ctx->int_flags) & IO_RING_F_HAS_EVFD) io_eventfd_signal(ctx, false); }