diff options
| author | Chris Mason <mason@kernel.org> | 2026-10-20 21:23:35 +0000 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2026-10-28 10:49:59 -0600 |
| commit | 51bab09b7ca1a9a6dd9303a3b7ee346f8128c963 (patch) | |
| tree | 0e2e3109b515d8055ae286152f4a3a6bc24e38a5 /tools/lib/python/kdoc/python_version.py | |
| parent | 0b34e7b20a48710b6f53716bf7030920b69fdbdd (diff) | |
io_uring: free XArray nodes left by a failed store
A failed xa_store() can leave nodes without entries in the tree, and
erasing every entry doesn't free those. An XArray needs xa_destroy()
before it goes away, even an empty one. That was dropped for tctx->xa in
commit ca6484cd308a ("io_uring: no need to call xa_destroy() on empty
xarray") over a lockdep report from freeing the tctx in softirq context,
and ctx->personalities never had it.
Now that the nodes are charged, a store can fail at memory.max and the
leaked nodes stay charged. Call xa_destroy() in io_uring_clean_tctx(),
which the task runs itself in process context before the tctx is freed,
in the error path of __io_uring_add_tctx_node(), and for
ctx->personalities in io_ring_ctx_free().
Fixes: ca6484cd308a ("io_uring: no need to call xa_destroy() on empty xarray")
Signed-off-by: Chris Mason <mason@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'tools/lib/python/kdoc/python_version.py')
0 files changed, 0 insertions, 0 deletions
