Commit 817869d2 authored by Jens Axboe's avatar Jens Axboe

io_uring: drop req submit reference always in async punt

If we don't end up actually calling submit in io_sq_wq_submit_work(),
we still need to drop the submit reference to the request. If we
don't, then we can leak the request. This can happen if we race
with ring shutdown while flushing the workqueue for requests that
require use of the mm_struct.

Fixes: e65ef56d ("io_uring: use regular request ref counts")
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 52e04ef4
...@@ -1568,10 +1568,11 @@ static void io_sq_wq_submit_work(struct work_struct *work) ...@@ -1568,10 +1568,11 @@ static void io_sq_wq_submit_work(struct work_struct *work)
break; break;
cond_resched(); cond_resched();
} while (1); } while (1);
/* drop submission reference */
io_put_req(req);
} }
/* drop submission reference */
io_put_req(req);
if (ret) { if (ret) {
io_cqring_add_event(ctx, sqe->user_data, ret, 0); io_cqring_add_event(ctx, sqe->user_data, ret, 0);
io_put_req(req); io_put_req(req);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment