diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2022-10-11 02:59:57 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-10-13 00:30:56 +0200 |
commit | 00927931cb630bbf8edb6d7f4dadb25139fc5e16 (patch) | |
tree | c3a95eb972c21540746920ab5263a92057c81525 /io_uring | |
parent | io_uring: local variable rw shadows outer variable in io_write (diff) | |
download | linux-00927931cb630bbf8edb6d7f4dadb25139fc5e16.tar.xz linux-00927931cb630bbf8edb6d7f4dadb25139fc5e16.zip |
io_uring: fix fdinfo sqe offsets calculation
Only with the big sqe feature they take 128 bytes per entry, but we
unconditionally advance by 128B. Fix it by using sq_shift.
Fixes: 3b8fdd1dc35e3 ("io_uring/fdinfo: fix sqe dumping for IORING_SETUP_SQE128")
Reported-and-tested-by: syzbot+e5198737e8a2d23d958c@syzkaller.appspotmail.com
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/8b41287cb75d5efb8fcb5cccde845ddbbadd8372.1665449983.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring')
-rw-r--r-- | io_uring/fdinfo.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/io_uring/fdinfo.c b/io_uring/fdinfo.c index 4eae088046d0..2e04850a657b 100644 --- a/io_uring/fdinfo.c +++ b/io_uring/fdinfo.c @@ -94,7 +94,7 @@ static __cold void __io_uring_show_fdinfo(struct io_ring_ctx *ctx, sq_idx = READ_ONCE(ctx->sq_array[entry & sq_mask]); if (sq_idx > sq_mask) continue; - sqe = &ctx->sq_sqes[sq_idx << 1]; + sqe = &ctx->sq_sqes[sq_idx << sq_shift]; seq_printf(m, "%5u: opcode:%s, fd:%d, flags:%x, off:%llu, " "addr:0x%llx, rw_flags:0x%x, buf_index:%d " "user_data:%llu", |