This is the patch series to address the hang we saw in production because of missed wakeups, and the other issues that Oleg noticed while reviewing the code. v2->v3: - apparently I don't understand what READ/WRITE_ONCE does - set ourselves to TASK_UNINTERRUPTIBLE on wakeup just in case - add a comment about why we don't need a mb for the first data.token check which I'm sure Oleg will tell me is wrong and I'll have to send a v4 v1->v2: - rename wq_has_multiple_sleepers to wq_has_single_sleeper - fix the check for has_sleepers in the missed wake-ups patch - fix the barrier issues around got_token that Oleg noticed - dropped the has_sleepers reset that Oleg noticed we didn't need Thanks, Josef