Re: [PATCH] io_uring: remove PF_EXITING checking in io_poll_rewait()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



在 2021/8/20 上午1:36, Jens Axboe 写道:
On 8/19/21 11:29 AM, Jens Axboe wrote:
On 8/19/21 11:26 AM, Hao Xu wrote:
在 2021/8/19 下午11:48, Jens Axboe 写道:
We have two checks of task->flags & PF_EXITING left:

1) In io_req_task_submit(), which is called in task_work and hence always
     in the context of the original task. That means that
     req->task == current, and hence checking ->flags is totally fine.

2) In io_poll_rewait(), where we need to stop re-arming poll to prevent
     it interfering with cancelation. Here, req->task is not necessarily
     current, and hence the check is racy. Use the ctx refs state instead
     to check if we need to cancel this request or not.
Hi Jens,
I saw cases that io_req_task_submit() and io_poll_rewait() in one
function, why one is safe and the other one not? btw, it seems both two
executes in task_work context..and task_work_add() may fail and then
work goes to system_wq, is that case safe?

io_req_task_submit() is guaranteed to be run in the task that is req->task,
io_poll_rewait() is not. The latter can get called from eg the poll
waitqueue handling, which is not run from the task in question.

Pavel nudged me, and in the 5.15 branch we actually only do run rewait
from the task itself. So this patch isn't needed, we can ignore it!
Might just augment it with a comment, like it was done for submit.
saw this after my second email. cool!





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux