io_do_iopoll() can async punt a request with io_queue_async_work(), so doing io_req_work_grab_env(). The problem is that iopoll() can be called from who knows what context, e.g. from a completely different process with its own memory space, creds, etc. io_do_iopoll() { ret = req->poll(); if (ret == -EAGAIN) io_queue_async_work() ... } I can't find it handled in io_uring. Can this even happen? Wouldn't it be better to complete them with -EAGAIN? -- Pavel Begunkov