Commit 0abcfd8983e3 for kernel

commit 0abcfd8983e3d3d27b8f5f7d01fed4354eb422c4
Merge: 8f7aa3d3c732 5d24321e4c15
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Dec 3 18:58:57 2025 -0800

    Merge tag 'for-6.19/io_uring-20251201' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux

    Pull io_uring updates from Jens Axboe:

     - Unify how task_work cancelations are detected, placing it in the
       task_work running state rather than needing to check the task state

     - Series cleaning up and moving the cancelation code to where it
       belongs, in cancel.c

     - Cleanup of waitid and futex argument handling

     - Add support for mixed sized SQEs. 6.18 added support for mixed sized
       CQEs, improving flexibility and efficiency of workloads that need big
       CQEs. This adds similar support for SQEs, where the occasional need
       for a 128b SQE doesn't necessitate having all SQEs be 128b in size

     - Introduce zcrx and SQ/CQ layout queries. The former returns what zcrx
       features are available. And both return the ring size information to
       help with allocation size calculation for user provided rings like
       IORING_SETUP_NO_MMAP and IORING_MEM_REGION_TYPE_USER

     - Zcrx updates for 6.19. It includes a bunch of small patches,
       IORING_REGISTER_ZCRX_CTRL and RQ flushing and David's work on sharing
       zcrx b/w multiple io_uring instances

     - Series cleaning up ring initializations, notable deduplicating ring
       size and offset calculations. It also moves most of the checking
       before doing any allocations, making the code simpler

     - Add support for getsockname and getpeername, which is mostly a
       trivial hookup after a bit of refactoring on the networking side

     - Various fixes and cleanups

    * tag 'for-6.19/io_uring-20251201' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux: (68 commits)
      io_uring: Introduce getsockname io_uring cmd
      socket: Split out a getsockname helper for io_uring
      socket: Unify getsockname and getpeername implementation
      io_uring/query: drop unused io_handle_query_entry() ctx arg
      io_uring/kbuf: remove obsolete buf_nr_pages and update comments
      io_uring/register: use correct location for io_rings_layout
      io_uring/zcrx: share an ifq between rings
      io_uring/zcrx: add io_fill_zcrx_offsets()
      io_uring/zcrx: export zcrx via a file
      io_uring/zcrx: move io_zcrx_scrub() and dependencies up
      io_uring/zcrx: count zcrx users
      io_uring/zcrx: add sync refill queue flushing
      io_uring/zcrx: introduce IORING_REGISTER_ZCRX_CTRL
      io_uring/zcrx: elide passing msg flags
      io_uring/zcrx: use folio_nr_pages() instead of shift operation
      io_uring/zcrx: convert to use netmem_desc
      io_uring/query: introduce rings info query
      io_uring/query: introduce zcrx query
      io_uring: move cq/sq user offset init around
      io_uring: pre-calculate scq layout
      ...

diff --cc io_uring/rw.c
index 6310a3d08409,a7b568c3dfe8..331af6bf4234
--- a/io_uring/rw.c
+++ b/io_uring/rw.c
@@@ -566,8 -567,18 +566,10 @@@ static inline int io_fixup_rw_res(struc
  	return res;
  }

- void io_req_rw_complete(struct io_kiocb *req, io_tw_token_t tw)
+ void io_req_rw_complete(struct io_tw_req tw_req, io_tw_token_t tw)
  {
+ 	struct io_kiocb *req = tw_req.req;
 -	struct io_rw *rw = io_kiocb_to_cmd(req, struct io_rw);
 -	struct kiocb *kiocb = &rw->kiocb;
 -
 -	if ((kiocb->ki_flags & IOCB_DIO_CALLER_COMP) && kiocb->dio_complete) {
 -		long res = kiocb->dio_complete(rw->kiocb.private);
 -
 -		io_req_set_res(req, io_fixup_rw_res(req, res), 0);
 -	}
+
  	io_req_io_end(req);

  	if (req->flags & (REQ_F_BUFFER_SELECTED|REQ_F_BUFFER_RING))