io_uring: Fix leaked shadow_req
io_queue_link_head() owns shadow_req after taking it as an argument. By not freeing it in case of an error, it can leak the request along with taken ctx->refs. Reviewed-by: Jackie Liu <liuyun01@kylinos.cn> Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
d6d5df1db6
commit
7b20238d28
|
@ -2413,6 +2413,7 @@ static int io_queue_link_head(struct io_ring_ctx *ctx, struct io_kiocb *req,
|
|||
if (ret) {
|
||||
if (ret != -EIOCBQUEUED) {
|
||||
io_free_req(req);
|
||||
__io_free_req(shadow);
|
||||
io_cqring_add_event(ctx, s->sqe->user_data, ret);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue