linux-kernelorg-stable/io_uring
Ming Lei 6f1cbf6d6f io_uring: fix buffer auto-commit for multishot uring_cmd
Commit 620a50c927 ("io_uring: uring_cmd: add multishot support") added
multishot uring_cmd support with explicit buffer upfront commit via
io_uring_mshot_cmd_post_cqe(). However, the buffer selection path in
io_ring_buffer_select() was auto-committing buffers for non-pollable files,
which conflicts with uring_cmd's explicit upfront commit model.

This way consumes the whole selected buffer immediately, and causes
failure on the following buffer selection.

Fix this by checking uring_cmd to identify operations that handle buffer
commit explicitly, and skip auto-commit for these operations.

Cc: Caleb Sander Mateos <csander@purestorage.com>
Fixes: 620a50c927 ("io_uring: uring_cmd: add multishot support")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2025-10-23 19:41:31 -06:00
..
Kconfig
Makefile io_uring: introduce io_uring querying 2025-09-08 08:06:37 -06:00
advise.c
advise.h
alloc_cache.c
alloc_cache.h
cancel.c io_uring: don't include filetable.h in io_uring.h 2025-09-08 13:20:46 -06:00
cancel.h
cmd_net.c
epoll.c
epoll.h
eventfd.c
eventfd.h
fdinfo.c io_uring/sqpoll: switch away from getrusage() for CPU accounting 2025-10-22 10:51:20 -06:00
fdinfo.h
filetable.c io_uring: correct __must_hold annotation in io_install_fixed_file 2025-10-23 07:25:07 -06:00
filetable.h
fs.c
fs.h
futex.c
futex.h
io-wq.c io_uring/io-wq: fix `max_workers` breakage and `nr_workers` underflow 2025-09-15 10:46:13 -06:00
io-wq.h
io_uring.c io_uring: Fix code indentation error 2025-10-22 10:56:11 -06:00
io_uring.h for-6.18/io_uring-20250929 2025-10-02 09:56:23 -07:00
kbuf.c io_uring: fix buffer auto-commit for multishot uring_cmd 2025-10-23 19:41:31 -06:00
kbuf.h
memmap.c
memmap.h
mock_file.c
msg_ring.c io_uring/msg_ring: kill alloc_cache for io_kiocb allocations 2025-09-18 13:59:15 -06:00
msg_ring.h
napi.c
napi.h
net.c io_uring: Fix code indentation error 2025-10-22 10:56:11 -06:00
net.h
nop.c
nop.h
notif.c for-6.18/io_uring-20250929 2025-10-02 09:56:23 -07:00
notif.h
opdef.c
opdef.h
openclose.c io_uring: don't include filetable.h in io_uring.h 2025-09-08 13:20:46 -06:00
openclose.h
poll.c for-6.18/io_uring-20250929 2025-10-02 09:56:23 -07:00
poll.h
query.c io_uring/query: cap number of queries 2025-09-19 07:06:43 -06:00
query.h io_uring: introduce io_uring querying 2025-09-08 08:06:37 -06:00
refs.h
register.c io_uring: fix unexpected placement on same size resizing 2025-10-15 08:01:38 -06:00
register.h
rsrc.c io_uring/rsrc: respect submitter_task in io_register_clone_buffers() 2025-09-08 13:21:24 -06:00
rsrc.h
rw.c io_uring/rw: check for NULL io_br_sel when putting a buffer 2025-10-15 13:38:53 -06:00
rw.h
slist.h
splice.c io_uring: don't include filetable.h in io_uring.h 2025-09-08 13:20:46 -06:00
splice.h
sqpoll.c io_uring/sqpoll: be smarter on when to update the stime usage 2025-10-22 10:55:33 -06:00
sqpoll.h io_uring/sqpoll: switch away from getrusage() for CPU accounting 2025-10-22 10:51:20 -06:00
statx.c
statx.h
sync.c
sync.h
tctx.c
tctx.h
timeout.c io_uring: include dying ring in task_work "should cancel" state 2025-09-18 10:24:50 -06:00
timeout.h
truncate.c
truncate.h
uring_cmd.c for-6.18/io_uring-20250929 2025-10-02 09:56:23 -07:00
uring_cmd.h
waitid.c io_uring: fix incorrect unlikely() usage in io_waitid_prep() 2025-10-20 09:22:09 -06:00
waitid.h
xattr.c
xattr.h
zcrx.c io_uring/zcrx: increment fallback loop src offset 2025-10-08 07:26:14 -06:00
zcrx.h io_uring/zcrx: allow synchronous buffer return 2025-09-16 12:37:21 -06:00