mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
synced 2025-09-15 00:56:46 +10:00
io_uring/timeout: always set 'ctx' in io_cancel_data
In preparation for using a generic handler to match requests for cancelation purposes, ensure that ctx is set in io_cancel_data. The timeout handlers don't check for this as it'll always match, but we'll need it set going forward. Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
ad711c5d11
commit
faa9c0ee3c
@ -409,7 +409,7 @@ static int io_timeout_update(struct io_ring_ctx *ctx, __u64 user_data,
|
|||||||
struct timespec64 *ts, enum hrtimer_mode mode)
|
struct timespec64 *ts, enum hrtimer_mode mode)
|
||||||
__must_hold(&ctx->timeout_lock)
|
__must_hold(&ctx->timeout_lock)
|
||||||
{
|
{
|
||||||
struct io_cancel_data cd = { .data = user_data, };
|
struct io_cancel_data cd = { .ctx = ctx, .data = user_data, };
|
||||||
struct io_kiocb *req = io_timeout_extract(ctx, &cd);
|
struct io_kiocb *req = io_timeout_extract(ctx, &cd);
|
||||||
struct io_timeout *timeout = io_kiocb_to_cmd(req, struct io_timeout);
|
struct io_timeout *timeout = io_kiocb_to_cmd(req, struct io_timeout);
|
||||||
struct io_timeout_data *data;
|
struct io_timeout_data *data;
|
||||||
@ -473,7 +473,7 @@ int io_timeout_remove(struct io_kiocb *req, unsigned int issue_flags)
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!(tr->flags & IORING_TIMEOUT_UPDATE)) {
|
if (!(tr->flags & IORING_TIMEOUT_UPDATE)) {
|
||||||
struct io_cancel_data cd = { .data = tr->addr, };
|
struct io_cancel_data cd = { .ctx = ctx, .data = tr->addr, };
|
||||||
|
|
||||||
spin_lock(&ctx->completion_lock);
|
spin_lock(&ctx->completion_lock);
|
||||||
ret = io_timeout_cancel(ctx, &cd);
|
ret = io_timeout_cancel(ctx, &cd);
|
||||||
|
Loading…
Reference in New Issue
Block a user