On 3/29/24 9:50 AM, Ming Lei wrote: > The two callers don't handle the return value of io_put_kbuf_comp(), so > change its return type into void. We might want to consider changing the name of it too, it's a bit different in that it's just recyling/dropping this kbuf rather than posting a completion on behalf of it. Maybe io_kbuf_drop() would be better. Would distuingish it from the normal use cases of "drop this kbuf and return the cflags representation of it, as I'm posting a completionw ith it". > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> > --- > io_uring/kbuf.h | 12 +++--------- > 1 file changed, 3 insertions(+), 9 deletions(-) > > diff --git a/io_uring/kbuf.h b/io_uring/kbuf.h > index 1c7b654ee726..86931fa655ad 100644 > --- a/io_uring/kbuf.h > +++ b/io_uring/kbuf.h > @@ -119,18 +119,12 @@ static inline void __io_put_kbuf_list(struct io_kiocb *req, > } > } > > -static inline unsigned int io_put_kbuf_comp(struct io_kiocb *req) > +static inline void io_put_kbuf_comp(struct io_kiocb *req) > { > - unsigned int ret; > - > lockdep_assert_held(&req->ctx->completion_lock); > > - if (!(req->flags & (REQ_F_BUFFER_SELECTED|REQ_F_BUFFER_RING))) > - return 0; > - > - ret = IORING_CQE_F_BUFFER | (req->buf_index << IORING_CQE_BUFFER_SHIFT); > - __io_put_kbuf_list(req, &req->ctx->io_buffers_comp); > - return ret; > + if (req->flags & (REQ_F_BUFFER_SELECTED|REQ_F_BUFFER_RING)) > + __io_put_kbuf_list(req, &req->ctx->io_buffers_comp); > } If you post a v2 with the above suggestion, let's please just keep the flags checking how it is. It's consistent with what we do elsewhere. -- Jens Axboe