Re: [PATCHv3 2/6] tty/ldsem: Update waiter->task before waking up reader

From: Sergey Senozhatsky
Date: Tue Sep 11 2018 - 01:41:40 EST


On (09/11/18 14:04), Sergey Senozhatsky wrote:
> > for (;;) {
> > set_current_state(TASK_UNINTERRUPTIBLE);
>
> I think that set_current_state() also executes memory barrier. Just
> because it accesses task state.
>
> > - if (!waiter.task)
> > + if (!READ_ONCE(waiter.task))
> > break;
> > if (!timeout)
> > break;

This READ_ONCE(waiter.task) looks interesting. Maybe could be moved
to a loop condition

while (!READ_ONCE(waiter.task)) {
...
}

-ss