On Sun, Jul 05, 2020 at 09:49:10AM -0400, Sasha Levin wrote: > On Sun, Jul 05, 2020 at 01:26:56PM +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote: > > > > The patch below does not apply to the 5.7-stable tree. > > If someone wants it applied there, or to any other stable or longterm > > tree, then please email the backport, including the original git commit > > id to <stable@xxxxxxxxxxxxxxx>. > > > > thanks, > > > > greg k-h > > > > ------------------ original commit in Linus's tree ------------------ > > > > > From ce593a6c480a22acba08795be313c0c6d49dd35d Mon Sep 17 00:00:00 2001 > > From: Jens Axboe <axboe@xxxxxxxxx> > > Date: Tue, 30 Jun 2020 12:39:05 -0600 > > Subject: [PATCH] io_uring: use signal based task_work running > > > > Since 5.7, we've been using task_work to trigger async running of > > requests in the context of the original task. This generally works > > great, but there's a case where if the task is currently blocked > > in the kernel waiting on a condition to become true, it won't process > > task_work. Even though the task is woken, it just checks whatever > > condition it's waiting on, and goes back to sleep if it's still false. > > > > This is a problem if that very condition only becomes true when that > > task_work is run. An example of that is the task registering an eventfd > > with io_uring, and it's now blocked waiting on an eventfd read. That > > read could depend on a completion event, and that completion event > > won't get trigged until task_work has been run. > > > > Use the TWA_SIGNAL notification for task_work, so that we ensure that > > the task always runs the work when queued. > > > > Cc: stable@xxxxxxxxxxxxxxx # v5.7 > > Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> > > This patch depends on e91b48162332 ("task_work: teach task_work_add() to > do signal_wake_up()"), I've queued both for 5.7. Great, thanks for adding that. greg k-h