io_uring-6.18-20251009

-----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAmjoDjwQHGF4Ym9lQGtl
 cm5lbC5kawAKCRD301j7KXHgpsU+EADBSwfdXgI9tY+Ldmoruf4nfySot6r7z7Em
 2VZ2+LCdGP/U8unMngpoI9ZGWQqWqSYnRNL+5RnYJR0dJTFYWd6ME+lXTgJNYfiX
 OR759rN3yC2NmfPL9U9L6CT+huGtk5zdnVNIx2aYxA7TxzbiIVfWB5ZuqigptSyg
 Hj+5yS9b8CqrnuZCavOvijB6/oL/ICtKz0Fn8X1Z0meJpQQT79exKwGclADWiVfF
 t+nshXv1N8jC40z2FpjGacmDOfVlyW+CiPfhRnj8KXFXAlP0WQiNjJYUKj1IC7Do
 eq6Wt2WJPSE74/t61h4RlECwWgNxXPykeYPnrpyduCjmgk2FsmqaFvtVWiJDaUGZ
 AByj/GMlRyW0FFoVtUi6Ne1NFWajCocE8yB8/GMn5neqZwgosu0R7bMEewdMoUVw
 IVY3J4ZoKgd+IFuBARahc9lLLXMLTGe1pzD/Let/Y6eioU9gfdokn990LQMaSp5L
 9DncBseYRjonI5GzXKkDn/Q5RRe0+Ifmec9cvz+JcI68NJWVxsHFLDtXpqhkxuFW
 Fs/BMlYUrPo4snKYdW0sulD2tfEC9CD3epe6O/7Lb68SbGlvKZSwLEzTeriy5N07
 bsBFmKKLNGhbWNGpBJjMjncHgCPf9oiND3rpzp7XuCa3hdcq0nI7yVCp1VlIBLRj
 ePg/3KsU9A==
 =p4O+
 -----END PGP SIGNATURE-----

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
This commit is contained in:
Linus Torvalds 2025-10-10 10:25:24 -07:00
commit eba41c0173
4 changed files with 9 additions and 3 deletions

View File

@ -404,7 +404,7 @@ enum io_uring_op {
* will be contiguous from the starting buffer ID.
*
* IORING_SEND_VECTORIZED If set, SEND[_ZC] will take a pointer to a io_vec
* to allow vectorized send operations.
* to allow vectorized send operations.
*/
#define IORING_RECVSEND_POLL_FIRST (1U << 0)
#define IORING_RECV_MULTISHOT (1U << 1)

View File

@ -29,7 +29,7 @@
*
* Also see the examples in the liburing library:
*
* git://git.kernel.dk/liburing
* git://git.kernel.org/pub/scm/linux/kernel/git/axboe/liburing.git
*
* io_uring also uses READ/WRITE_ONCE() for _any_ store or load that happens
* from data shared between the kernel and application. This is done both

View File

@ -230,13 +230,14 @@ static int io_waitid_wait(struct wait_queue_entry *wait, unsigned mode,
if (!pid_child_should_wake(wo, p))
return 0;
list_del_init(&wait->entry);
/* cancel is in progress */
if (atomic_fetch_inc(&iw->refs) & IO_WAITID_REF_MASK)
return 1;
req->io_task_work.func = io_waitid_cb;
io_req_task_work_add(req);
list_del_init(&wait->entry);
return 1;
}

View File

@ -1079,6 +1079,7 @@ static ssize_t io_copy_page(struct io_copy_cache *cc, struct page *src_page,
cc->size -= n;
cc->offset += n;
src_offset += n;
len -= n;
copied += n;
}
@ -1236,12 +1237,16 @@ io_zcrx_recv_skb(read_descriptor_t *desc, struct sk_buff *skb,
end = start + frag_iter->len;
if (offset < end) {
size_t count;
copy = end - offset;
if (copy > len)
copy = len;
off = offset - start;
count = desc->count;
ret = io_zcrx_recv_skb(desc, frag_iter, off, copy);
desc->count = count;
if (ret < 0)
goto out;