On 8/25/21 6:58 PM, Hao Xu wrote: > It's not necessary to free the request back to slab when we fail to > get sqe, just move it to state->free_list. Looks good, with that we have a consistent behaviour of retaining io_kiocb for all cases. Reviewed-by: Pavel Begunkov <asml.silence@xxxxxxxxx> > 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..c53b084668fc 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); > + list_add(&req->inflight_entry, &ctx->submit_state.free_list); > break; > } > /* will complete beyond this point, count as submitted */ > -- Pavel Begunkov