diff options
| author | Jens Axboe <axboe@kernel.dk> | 2026-01-16 15:28:58 -0700 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2026-02-06 07:29:14 -0700 |
| commit | 9fd99788f3e5a129908c242bb29946077ca46611 (patch) | |
| tree | e70e04809c1cc4d7466da5d2ede77b1861e054c0 /io_uring | |
| parent | e7f67c2be7877a3d44aa79b8d22eae8cb6e2c6d6 (diff) | |
io_uring: add task fork hook
Called when copy_process() is called to copy state to a new child.
Right now this is just a stub, but will be used shortly to properly
handle fork'ing of task based io_uring restrictions.
Reviewed-by: Christian Brauner (Microsoft) <brauner@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring')
| -rw-r--r-- | io_uring/tctx.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/io_uring/tctx.c b/io_uring/tctx.c index 5b66755579c0..d4f7698805e4 100644 --- a/io_uring/tctx.c +++ b/io_uring/tctx.c @@ -54,16 +54,18 @@ void __io_uring_free(struct task_struct *tsk) * node is stored in the xarray. Until that gets sorted out, attempt * an iteration here and warn if any entries are found. */ - xa_for_each(&tctx->xa, index, node) { - WARN_ON_ONCE(1); - break; - } - WARN_ON_ONCE(tctx->io_wq); - WARN_ON_ONCE(tctx->cached_refs); + if (tctx) { + xa_for_each(&tctx->xa, index, node) { + WARN_ON_ONCE(1); + break; + } + WARN_ON_ONCE(tctx->io_wq); + WARN_ON_ONCE(tctx->cached_refs); - percpu_counter_destroy(&tctx->inflight); - kfree(tctx); - tsk->io_uring = NULL; + percpu_counter_destroy(&tctx->inflight); + kfree(tctx); + tsk->io_uring = NULL; + } } __cold int io_uring_alloc_task_context(struct task_struct *task, @@ -351,3 +353,8 @@ int io_ringfd_unregister(struct io_ring_ctx *ctx, void __user *__arg, return i ? i : ret; } + +int __io_uring_fork(struct task_struct *tsk) +{ + return 0; +} |
