It's not neccessary to free the request back to slab when we fail to get sqe, just update state->free_reqs pointer. Signed-off-by: Hao Xu <haoxu@xxxxxxxxxxxxxxxxx> --- fs/io_uring.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/io_uring.c b/fs/io_uring.c index 74b606990d7e..ce66a9ce2b43 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -6899,7 +6899,7 @@ static int io_submit_sqes(struct io_ring_ctx *ctx, unsigned int nr) } sqe = io_get_sqe(ctx); if (unlikely(!sqe)) { - kmem_cache_free(req_cachep, req); + ctx->submit_state.free_reqs++; break; } /* will complete beyond this point, count as submitted */ -- 2.24.4