io_uring/rsrc: use kvfree() for the imu cache

Currently anything that requires kvmalloc_flex() for allocations will
not get re-cached, and hence the cache freeing path is correct in that
it always uses kfree() to free the allocated memory. But this seems a
bit fragile as it's something that could get mix should that situation
change, so switch io_free_imu() and io_alloc_cache_free() to use kvfree
as the desctructor.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Jens Axboe 2026-04-20 13:15:41 -06:00
parent 53262c91f7
commit 02b8d41c17
2 changed files with 2 additions and 2 deletions

View File

@ -64,7 +64,7 @@ static inline void *io_cache_alloc(struct io_alloc_cache *cache, gfp_t gfp)
static inline void io_cache_free(struct io_alloc_cache *cache, void *obj) static inline void io_cache_free(struct io_alloc_cache *cache, void *obj)
{ {
if (!io_alloc_cache_put(cache, obj)) if (!io_alloc_cache_put(cache, obj))
kfree(obj); kvfree(obj);
} }
#endif #endif

View File

@ -168,7 +168,7 @@ bool io_rsrc_cache_init(struct io_ring_ctx *ctx)
void io_rsrc_cache_free(struct io_ring_ctx *ctx) void io_rsrc_cache_free(struct io_ring_ctx *ctx)
{ {
io_alloc_cache_free(&ctx->node_cache, kfree); io_alloc_cache_free(&ctx->node_cache, kfree);
io_alloc_cache_free(&ctx->imu_cache, kfree); io_alloc_cache_free(&ctx->imu_cache, kvfree);
} }
static void io_clear_table_tags(struct io_rsrc_data *data) static void io_clear_table_tags(struct io_rsrc_data *data)