linux/io_uring
Linus Torvalds 9ed11143be io_uring-7.4-20261029
-----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAmrknLkQHGF4Ym9lQGtl
 cm5lbC5kawAKCRD301j7KXHgpkHqD/9UX2LGi+78JGR8myWEsKaJxulcHSKRui2J
 CmdLFuVp6Hvpy8lXgOOOq1n2jPktV5mH8QzaSPVLiHW4f3VC6I5NuLX5apycKtu7
 Fu9RLwPcH+S+UV8FjMq4ZRbSXyEPM1+9/TguiUDNP9myL9bL1ixkgh/SLCMU4wHF
 LYWSv2BHdvxue1Qg6ALX4JDfQDhKLC4k/0Re1XNaTOJQiDjcioluE/nZqMy/YLZt
 i1e+XiCOVDeoHpO7tsiGYIAaEQGAVWK0VL+lGr8Hg4/uCKtmd/VjiilZp73OopXF
 XfCxZN5qMG1l9ZEm7hCUc8ZlF1Yhjjw2hZCVbIWU9jrchUMM2M7urSbDNrobIM1+
 kjN0CZtOYEPiL7U1VN5qbtfdwy3CwzW6DLoMD6AH89fkPg1U8JaoGDp0inabM2aS
 QFdmgVTMz5tUmN5f2E5WiwXwU5hZN6zscLVqaNx3UBKqhPY+aQoWWtyDL9jAFpay
 doo4r4DjPJEHW+Qxd9eAKbNf123PnKlDL8Ej8PMjQo93HotWQT67HAObt1WS+Dri
 p7rV9YWGXOLIbk9MBElyWob8qY8XIP4z2RrtgwriL9pGk5EN2LukRLfhbW7fw9fM
 xrfrPiKywWqxbsycmYJdlprSmHXengoDdJBSavpqaebiPNW45eaRxYWzM2pgfioO
 NNiG2nUpJA==
 =GdWz
 -----END PGP SIGNATURE-----

Merge tag 'io_uring-7.4-20261029' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux

Pull io_uring fixes from Jens Axboe:

 - A batch of fixes from Chris:
    - Charge registered buffer arrays, rsrc nodes, tctx nodes and
      personalities to memcg, and free the XArray nodes a failed store
      leaves behind.
    - Clear bpf_ctx while submitting SQEs from a bpf-ops program, as the
      socket code otherwise skips both the capability check and
      lock_sock() for a setsockopt from the SQ.
    - Free the task context after an RCU grace period, closing a UAF
      when a foreign task frees the last request.
    - Stop io_ring_exit_work() from waiting on an SQPOLL thread held in
      get_signal(), and drop sqd->lock while the thread waits for
      in-flight requests, as either one could pin every iou_exit slot

 - io-wq fixes:
    - Don't create new workers once the exit has begun, which could
      leave an exiting worker in the thread group under exec
    - save the worker type before dropping its reference (KASAN UAF)
    - Defer io-wq enqueues from a foreign task to task_work, as an
      IOPOLL reap by another task could race io_wq_put_and_exit()

 - Keep the drain active when the deferred request being started is
   itself a drain request, and don't attach a new ring to an SQPOLL
   thread that is already canceling

 - Fix the multishot recv length limit accounting, and count cancelled
   timeouts in cq_timeouts so an armed off timeout doesn't fire early

 - Advance the buffer ring head when a pickup empties it, and keep the
   recvmsg buffer select length within MAX_RW_COUNT

 - Mask the socket type in the bpf filter population so SOCK_CLOEXEC or
   SOCK_NONBLOCK can't bypass a type filter, and enforce the per-task
   register restrictions for blind registration

 - Complete a non-blocking connect() that fails with -EAGAIN rather than
   retrying it through poll and io-wq, matching connect(2)

 - napi list traversal cleanup, and remove a useless min_not_zero()

* tag 'io_uring-7.4-20261029' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux: (21 commits)
  io_uring/sqpoll: don't attach to a thread that is canceling
  io_uring/net: fix multishot recv length limit accounting
  io_uring/timeout: count cancelled timeouts in cq_timeouts
  io_uring/napi: clean up list traversal with list_for_each_entry_safe()
  io_uring: defer foreign io-wq enqueues to task_work
  io_uring/io-wq: save worker type before dropping its reference
  io_uring/cancel: drop sqd->lock while SQPOLL waits
  io_uring/sqpoll: don't wait for the thread to exit
  io_uring: free the task context after a grace period
  io_uring/bpf-ops: clear bpf_ctx while submitting SQEs
  io_uring: free XArray nodes left by a failed store
  io_uring: charge tctx nodes and personalities
  io_uring/rsrc: charge buffer arrays and nodes to memcg
  io_uring/io-wq: no new workers once the exit has begun
  io_uring: keep the drain active when a deferred drain request is started
  io_uring/net: don't retry a non-blocking connect() that fails with -EAGAIN
  io_uring/register: enforce per-task restrictions in io_uring_register_blind()
  io_uring/net: mask socket type with SOCK_TYPE_MASK in io_socket_bpf_populate()
  io_uring/net: Remove useless min_not_zero() usage
  io_uring/net: keep recvmsg buffer select length within MAX_RW_COUNT
  ...
2026-10-30 06:29:43 -10:00
..
advise.c io_uring: finish IOU_OK -> IOU_COMPLETE transition 2025-05-21 08:41:16 -06:00
advise.h
alloc_cache.c io_uring: add alloc_cache.c 2025-01-28 15:10:40 -07:00
alloc_cache.h io_uring/rsrc: use kvfree() for the imu cache 2026-04-21 12:19:01 -06:00
bpf_filter.c io_uring/bpf_filter: mark source as COW when cloning filters 2026-09-21 10:50:04 -06:00
bpf_filter.h io_uring: allow registration of per-task restrictions 2026-02-06 07:29:19 -07:00
bpf-ops.c io_uring/bpf-ops: clear bpf_ctx while submitting SQEs 2026-10-28 10:50:07 -06:00
bpf-ops.h io_uring/bpf-ops: restrict ctx access to BPF 2026-06-02 11:20:21 -06:00
cancel.c io_uring/cancel: drop sqd->lock while SQPOLL waits 2026-10-28 10:50:24 -06:00
cancel.h io_uring/cancel: don't forget that the work was running 2026-10-15 14:17:56 -06:00
cmd_net.c io_uring/cmd_net: end TX_TIMESTAMP multishot when the CQ is full 2026-09-28 08:29:09 -06:00
dma-buf.c io_uring/dma-buf: allow cloning registered dma-bufs 2026-10-16 08:23:04 -06:00
dma-buf.h io_uring/dma-buf: don't fail fixed buffers without dma-buf support 2026-10-22 09:27:00 -06:00
epoll.c Revert "io_uring/epoll: disallow adding an epoll file to an epoll context" 2026-07-30 10:36:06 -06:00
epoll.h io_uring/epoll: add support for IORING_OP_EPOLL_WAIT 2025-02-20 07:59:56 -07:00
eventfd.c io_uring: defer eventfd signaling when queued from a wakeup handler 2026-08-15 16:56:49 -06:00
eventfd.h io_uring: defer eventfd signaling when queued from a wakeup handler 2026-08-15 16:56:49 -06:00
fdinfo.c io_uring/fdinfo: fix CQE dump of CQE32 rings 2026-10-15 14:17:57 -06:00
fdinfo.h
filetable.c io_uring/filetable: clamp alloc_hint to the configured alloc range 2026-02-11 15:20:44 -07:00
filetable.h io_uring: Trim out unused includes 2026-01-05 17:08:20 -07:00
fs.c io_uring/fs: check unused sqe fields for unlinkat 2026-07-14 13:18:11 -06:00
fs.h
futex.c io_uring/futex: return a wait's data to the cache when it fails to arm 2026-10-20 08:34:27 -06:00
futex.h io_uring/futex: don't mark futex wake requests as inflight 2026-07-30 10:35:26 -06:00
io_uring.c io_uring: defer foreign io-wq enqueues to task_work 2026-10-28 10:50:34 -06:00
io_uring.h io_uring/timeout: don't lose a cancel as io-wq arms a timeout 2026-10-15 18:26:33 -06:00
io-wq.c io_uring/io-wq: save worker type before dropping its reference 2026-10-28 10:50:29 -06:00
io-wq.h io_uring: Add SPDX id lines to remaining source files 2026-02-04 07:23:45 -07:00
kbuf.c io_uring/kbuf: advance head when a pickup empties the buffer ring 2026-10-26 12:11:40 -06:00
kbuf.h io_uring/kbuf: support min length left for incremental buffers 2026-04-28 16:08:56 -06:00
Kconfig io_uring/bpf-ops: implement loop_step with BPF struct_ops 2026-03-16 16:15:00 -06:00
loop.c io_uring: don't lose the DEFER_TASKRUN wake up 2026-10-15 13:45:23 -06:00
loop.h io_uring/bpf-ops: restrict ctx access to BPF 2026-06-02 11:20:21 -06:00
Makefile io_uring/rsrc: add dmabuf backed registered buffers 2026-10-14 07:36:03 -06:00
memmap.c Merge branch 'io_uring-7.3' into for-7.4/io_uring 2026-10-15 13:44:51 -06:00
memmap.h io_uring: do not charge the SQ/CQ rings to RLIMIT_MEMLOCK 2026-10-08 13:07:38 -06:00
mock_file.c file: make struct fd_prepare const and kill its err field 2026-09-23 09:27:44 +02:00
mpscq.h io_uring/mpscq: disable preemption while pushing 2026-10-15 13:45:23 -06:00
msg_ring.c io_uring/msg_ring: reject CQE32 flag pass-through to normal rings 2026-07-01 05:39:26 -06:00
msg_ring.h io_uring/msg_ring: Drop custom destructor 2024-12-27 10:08:21 -07:00
napi.c io_uring/napi: clean up list traversal with list_for_each_entry_safe() 2026-10-29 09:29:50 -06:00
napi.h io_uring/napi: clear tracked NAPI entries on unregister 2026-05-03 23:21:23 -06:00
net.c io_uring/net: fix multishot recv length limit accounting 2026-10-29 09:49:34 -06:00
net.h io_uring/net: allow filtering on IORING_OP_CONNECT 2026-05-14 07:23:01 -06:00
nop.c io_uring/nop: fix file reference leak with IOSQE_FIXED_FILE 2026-06-16 06:20:01 -06:00
nop.h
notif.c io_uring/notif: count pending zerocopy notifications per ring 2026-09-28 11:47:31 -06:00
notif.h
opdef.c io_uring/futex: don't mark futex wake requests as inflight 2026-07-30 10:35:26 -06:00
opdef.h io_uring: remove iopoll_queue from struct io_issue_def 2026-03-16 16:14:14 -06:00
openclose.c io_uring/openclose: keep the lock in io_pipe_fixed() 2026-10-15 14:17:57 -06:00
openclose.h io_uring/bpf_filter: allow filtering on contents of struct open_how 2026-01-27 11:10:46 -07:00
poll.c io_uring/poll: don't loop on HUP with multiple references 2026-10-19 10:01:53 -06:00
poll.h io_uring: add wrapper type for io_req_tw_func_t arg 2025-11-03 08:31:26 -07:00
query.c io_uring/query: cap user size passed to copy_struct_to_user 2026-08-25 11:49:48 -06:00
query.h io_uring/query: drop unused io_handle_query_entry() ctx arg 2025-11-26 09:37:10 -07:00
refs.h io_uring/rw: don't reap io-wq IOPOLL completions while io-wq has a reference 2026-09-28 11:47:22 -06:00
register.c io_uring/register: enforce per-task restrictions in io_uring_register_blind() 2026-10-26 12:11:41 -06:00
register.h io_uring: unify getting ctx from passed in file descriptor 2026-04-08 13:21:35 -06:00
rsrc.c io_uring-7.4-20261029 2026-10-30 06:29:43 -10:00
rsrc.h io_uring/dma-buf: allow cloning registered dma-bufs 2026-10-16 08:23:04 -06:00
rw.c for-7.4/io_uring-dmabuf-20261023 2026-10-27 07:46:05 -10:00
rw.h block: split out a new blk_plug.h header 2026-08-04 06:57:05 -06:00
slist.h io_uring: Add SPDX id lines to remaining source files 2026-02-04 07:23:45 -07:00
splice.c io_uring: don't include filetable.h in io_uring.h 2025-09-08 13:20:46 -06:00
splice.h io_uring/splice: open code 2nd direct file assignment 2024-10-29 13:43:28 -06:00
sqpoll.c io_uring/sqpoll: don't attach to a thread that is canceling 2026-10-30 07:33:00 -06:00
sqpoll.h io_uring/sqpoll: don't wait for the thread to exit 2026-10-28 10:50:19 -06:00
statx.c allow incomplete imports of filenames 2026-01-13 15:18:07 -05:00
statx.h
sync.c io_uring/sync: validate passed in offset 2026-01-21 11:50:59 -07:00
sync.h
tctx.c io_uring: free the task context after a grace period 2026-10-28 10:50:12 -06:00
tctx.h io_uring: preserve task restrictions across exec 2026-07-30 14:40:22 -06:00
timeout.c io_uring/timeout: count cancelled timeouts in cq_timeouts 2026-10-29 09:49:19 -06:00
timeout.h io_uring/cancel: cancel and wait for all requests on process exit 2026-09-28 11:47:37 -06:00
truncate.c fs: pass on FTRUNCATE_* flags to do_truncate 2026-03-23 12:41:57 +01:00
truncate.h
tw.c io_uring: wake ring pollers for local task_work 2026-10-15 14:17:56 -06:00
tw.h io_uring: remove the per-ctx fallback task_work machinery 2026-06-13 06:27:20 -06:00
uring_cmd.c io_uring/cmd: don't leave list poison in ->hash_node 2026-10-15 13:45:23 -06:00
uring_cmd.h io_uring/uring_cmd: only cancel requests of the given task 2026-09-28 11:47:28 -06:00
wait.c io_uring/wait: wake real-time waiters from hard interrupt context 2026-10-19 15:02:32 -06:00
wait.h io_uring: don't lose the DEFER_TASKRUN wake up 2026-10-15 13:45:23 -06:00
waitid.c io_uring/waitid: return -EAGAIN for a non-blocking pidfd 2026-10-19 15:01:45 -06:00
waitid.h io_uring: move cancelations to be io_uring_task based 2024-11-06 13:55:38 -07:00
xattr.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
xattr.h
zcrx.c io_uring/zcrx: fix buffer offsets in areas above 4GB 2026-10-15 14:17:57 -06:00
zcrx.h for-7.3/io_uring-20260819 2026-08-20 13:47:56 -07:00