Skip to content

Commit eba41c0

Browse files
committed
Merge tag 'io_uring-6.18-20251009' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux
Pull io_uring fixes from Jens Axboe: - Fixup indentation in the UAPI header - Two fixes for zcrx. One fixes receiving too much in some cases, and the other deals with not correctly incrementing the source in the fallback copy loop - Fix for a race in the IORING_OP_WAITID command, where there was a small window where the request would be left on the wait_queue_head list even though it was being canceled/completed - Update liburing git URL in the kernel tree * tag 'io_uring-6.18-20251009' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux: io_uring/zcrx: increment fallback loop src offset io_uring/zcrx: fix overshooting recv limit io_uring: use tab indentation for IORING_SEND_VECTORIZED comment io_uring/waitid: always prune wait queue entry in io_waitid_wait() io_uring: update liburing git URL
2 parents 8cc8ea2 + e9a9dcb commit eba41c0

File tree

4 files changed

+9
-3
lines changed

4 files changed

+9
-3
lines changed

include/uapi/linux/io_uring.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ enum io_uring_op {
404404
* will be contiguous from the starting buffer ID.
405405
*
406406
* IORING_SEND_VECTORIZED If set, SEND[_ZC] will take a pointer to a io_vec
407-
* to allow vectorized send operations.
407+
* to allow vectorized send operations.
408408
*/
409409
#define IORING_RECVSEND_POLL_FIRST (1U << 0)
410410
#define IORING_RECV_MULTISHOT (1U << 1)

io_uring/io_uring.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
*
3030
* Also see the examples in the liburing library:
3131
*
32-
* git://git.kernel.dk/liburing
32+
* git://git.kernel.org/pub/scm/linux/kernel/git/axboe/liburing.git
3333
*
3434
* io_uring also uses READ/WRITE_ONCE() for _any_ store or load that happens
3535
* from data shared between the kernel and application. This is done both

io_uring/waitid.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,13 +230,14 @@ static int io_waitid_wait(struct wait_queue_entry *wait, unsigned mode,
230230
if (!pid_child_should_wake(wo, p))
231231
return 0;
232232

233+
list_del_init(&wait->entry);
234+
233235
/* cancel is in progress */
234236
if (atomic_fetch_inc(&iw->refs) & IO_WAITID_REF_MASK)
235237
return 1;
236238

237239
req->io_task_work.func = io_waitid_cb;
238240
io_req_task_work_add(req);
239-
list_del_init(&wait->entry);
240241
return 1;
241242
}
242243

io_uring/zcrx.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,6 +1079,7 @@ static ssize_t io_copy_page(struct io_copy_cache *cc, struct page *src_page,
10791079

10801080
cc->size -= n;
10811081
cc->offset += n;
1082+
src_offset += n;
10821083
len -= n;
10831084
copied += n;
10841085
}
@@ -1236,12 +1237,16 @@ io_zcrx_recv_skb(read_descriptor_t *desc, struct sk_buff *skb,
12361237

12371238
end = start + frag_iter->len;
12381239
if (offset < end) {
1240+
size_t count;
1241+
12391242
copy = end - offset;
12401243
if (copy > len)
12411244
copy = len;
12421245

12431246
off = offset - start;
1247+
count = desc->count;
12441248
ret = io_zcrx_recv_skb(desc, frag_iter, off, copy);
1249+
desc->count = count;
12451250
if (ret < 0)
12461251
goto out;
12471252

0 commit comments

Comments
 (0)