On 4/27/21 1:45 PM, Hao Xu wrote: > we don't need to re-fork the sqthread over exec, so no need to set > IORING_SQ_NEED_WAKEUP when sqthread is dying. It forces users to call io_uring_enter() for it to return -EOWNERDEAD. Consider that scenario with the ring given away to some other task not in current group, e.g. via socket. if (ctx->flags & IORING_SETUP_SQPOLL) { io_cqring_overflow_flush(ctx, false); ret = -EOWNERDEAD; if (unlikely(ctx->sq_data->thread == NULL)) { goto out; } ... } btw, can use a comment > > Signed-off-by: Hao Xu <haoxu@xxxxxxxxxxxxxxxxx> > --- > fs/io_uring.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/fs/io_uring.c b/fs/io_uring.c > index 6b578c380e73..92dcd1c21516 100644 > --- a/fs/io_uring.c > +++ b/fs/io_uring.c > @@ -6897,8 +6897,6 @@ static int io_sq_thread(void *data) > > io_uring_cancel_sqpoll(sqd); > sqd->thread = NULL; > - list_for_each_entry(ctx, &sqd->ctx_list, sqd_list) > - io_ring_set_wakeup_flag(ctx); > io_run_task_work(); > io_run_task_work_head(&sqd->park_task_work); > mutex_unlock(&sqd->lock); > -- Pavel Begunkov