Message ID | 20200923114419.71218-5-songmuchun@bytedance.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | io_uring: Fix async workqueue is not canceled on some corner case | expand |
On 9/23/20 5:44 AM, Muchun Song wrote: > We forget to save the current thread files, in this case, we can not > send SIGINT signal to the kworker because the files is not equal. > > Fixes: 54ee77961e79 ("io_uring: Fix NULL pointer dereference in io_sq_wq_submit_work()") > Signed-off-by: Muchun Song <songmuchun@bytedance.com> > --- > fs/io_uring.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/fs/io_uring.c b/fs/io_uring.c > index 12e68ea00a543..c65f78f395655 100644 > --- a/fs/io_uring.c > +++ b/fs/io_uring.c > @@ -2391,6 +2391,8 @@ static bool io_add_to_prev_work(struct async_list *list, struct io_kiocb *req) > if (ret) { > struct io_ring_ctx *ctx = req->ctx; > > + req->files = current->files; > + > spin_lock_irq(&ctx->task_lock); > list_add(&req->task_list, &ctx->task_list); > req->work_task = NULL; This should be folded in with patch 1.
diff --git a/fs/io_uring.c b/fs/io_uring.c index 12e68ea00a543..c65f78f395655 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -2391,6 +2391,8 @@ static bool io_add_to_prev_work(struct async_list *list, struct io_kiocb *req) if (ret) { struct io_ring_ctx *ctx = req->ctx; + req->files = current->files; + spin_lock_irq(&ctx->task_lock); list_add(&req->task_list, &ctx->task_list); req->work_task = NULL;
We forget to save the current thread files, in this case, we can not send SIGINT signal to the kworker because the files is not equal. Fixes: 54ee77961e79 ("io_uring: Fix NULL pointer dereference in io_sq_wq_submit_work()") Signed-off-by: Muchun Song <songmuchun@bytedance.com> --- fs/io_uring.c | 2 ++ 1 file changed, 2 insertions(+)