]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
io_uring/msg_ring: use kmem_cache_free() to free request
authorJens Axboe <axboe@kernel.dk>
Mon, 1 Jul 2024 14:46:25 +0000 (08:46 -0600)
committerJens Axboe <axboe@kernel.dk>
Mon, 1 Jul 2024 15:10:59 +0000 (09:10 -0600)
The change adding caching around the request allocated and freed for
data messages changed a kmem_cache_free() to a kfree(), which isn't
correct as the request came from slab in the first place. Fix that up
and use the right freeing function if the cache is already at its limit.

Note that the current mixing of kmem_cache_alloc and kfree is fine, but
consistent alloc/free functions should be used as it's otherwise somewhat
confusing.

Fixes: 50cf5f3842af ("io_uring/msg_ring: add an alloc cache for io_kiocb entries")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/msg_ring.c

index c2171495098bfe74308e800957e6f10f69efd0ca..29fa9285a33d9e1b4c3f2f1ff80e9858de318f4e 100644 (file)
@@ -82,7 +82,7 @@ static void io_msg_tw_complete(struct io_kiocb *req, struct io_tw_state *ts)
                spin_unlock(&ctx->msg_lock);
        }
        if (req)
-               kfree(req);
+               kmem_cache_free(req_cachep, req);
        percpu_ref_put(&ctx->refs);
 }