Skip to content

Commit f024d3a

Browse files
committed
io_uring/fdinfo: annotate racy sq/cq head/tail reads
syzbot complains about the cached sq head read, and it's totally right. But we don't need to care, it's just reading fdinfo, and reading the CQ or SQ tail/head entries are known racy in that they are just a view into that very instant and may of course be outdated by the time they are reported. Annotate both the SQ head and CQ tail read with data_race() to avoid this syzbot complaint. Link: https://lore.kernel.org/io-uring/6811f6dc.050a0220.39e3a1.0d0e.GAE@google.com/ Reported-by: syzbot+3e77fd302e99f5af9394@syzkaller.appspotmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent edd43f4 commit f024d3a

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

io_uring/fdinfo.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,11 @@ __cold void io_uring_show_fdinfo(struct seq_file *m, struct file *file)
123123
seq_printf(m, "SqMask:\t0x%x\n", sq_mask);
124124
seq_printf(m, "SqHead:\t%u\n", sq_head);
125125
seq_printf(m, "SqTail:\t%u\n", sq_tail);
126-
seq_printf(m, "CachedSqHead:\t%u\n", ctx->cached_sq_head);
126+
seq_printf(m, "CachedSqHead:\t%u\n", data_race(ctx->cached_sq_head));
127127
seq_printf(m, "CqMask:\t0x%x\n", cq_mask);
128128
seq_printf(m, "CqHead:\t%u\n", cq_head);
129129
seq_printf(m, "CqTail:\t%u\n", cq_tail);
130-
seq_printf(m, "CachedCqTail:\t%u\n", ctx->cached_cq_tail);
130+
seq_printf(m, "CachedCqTail:\t%u\n", data_race(ctx->cached_cq_tail));
131131
seq_printf(m, "SQEs:\t%u\n", sq_tail - sq_head);
132132
sq_entries = min(sq_tail - sq_head, ctx->sq_entries);
133133
for (i = 0; i < sq_entries; i++) {

0 commit comments

Comments
 (0)