On Wed, 5 Mar 2025 12:44:34 +0100 Oleg Nesterov <oleg@xxxxxxxxxx> > On 03/05, Hillf Danton wrote: > > See the loop in ___wait_event(), > > > > for (;;) { > > prepare_to_wait_event(); > > > > // flip > > if (condition) > > break; > > > > schedule(); > > } > > > > After wakeup, waiter will sleep again if condition flips false on the waker > > side before waiter checks condition, even if condition is atomic, no? > > Yes, but in this case pipe_full() == true is correct, this writer can > safely sleep. > No, because no reader is woken up before sleep to make pipe not full.