On Fri, 14 Jun 2024 at 09:06, Jens Axboe <axboe@xxxxxxxxx> wrote: > > - Ensure that the task state is correct before attempting to grab a > mutex This code is horrid. That code *also* does schedule(); __set_current_state(TASK_RUNNING); which makes no sense at all. If you just returned from schedule(), you *will* be running. The reason you need that __set_current_state(TASK_RUNNING); in the *other* place is the very fact that you didn't call schedule at all after doing a prepare_to_wait(&ctx->rsrc_quiesce_wq, &we, TASK_INTERRUPTIBLE); So the bug was that the code had the __set_current_state() in exactly the wrong place. But the fix didn't remove the bogus one, so it all looks entirely like voodoo. Linus